mysql存储过程日期
1、存储过程定义:
存储过程是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程可以简化应用开发 人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
2、特点:
封装,复用 : 可以把某一业务SQL封装在存储过程中,需要用到 的时候直接调用即可。
可以接收参数,也可以返回数据 :再存储过程中,可以传递参数,也可以接收返回 值。
减少网络交互,效率提升 : 如果涉及到多条SQL,每执行一次都是一次网络传 输。 而如果封装在存储过程中,我们只需要网络交互一次可能就可以了。
3、基本语法
(1)创建:
(2)调用:
(3)查看:
(4)删除
注意: 在命令行中,执行创建存储过程的SQL时,需要通过关键字 delimiter 指定SQL语句的 结束符。
❷ MySQL 用存储过程更新员工工作时间表
mysql更新表中数据的存储过程,代码如下:
mysql> CREATE TABLE Employee( //创建表
-> id int,
-> first_name VARCHAR(15),
-> last_name VARCHAR(15),
-> start_date DATE,
-> end_date DATE,
-> salary FLOAT(8,2),
-> city VARCHAR(10),
-> description VARCHAR(15)
-> );
Query OK, 0 rows affected (0.01 sec)
--//导入数据
mysql> insert into Employee(id,first_name, last_name, start_date, end_Date, salary, City, Description)
-> values (1,'Jason', 'Martin', '19960725', '20060725', 1234.56, 'Toronto', 'Programmer');
Query OK, 1 row affected (0.00 sec)
❸ mysql存储过程中怎么用date
跟字符串一样的处理,当然还有一些 特殊的 时间处理函数DELIMITER $$DROP PROCEDURE IF EXISTS `datatime`$$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `iccsdb`.`datatime`() /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA } | SQL SECURITY { DEFINER | INVOKER } | COMMENT 'string'*/ BEGIN DECLARE dattime DATETIME DEFAULT '2013-10-10'; SELECT dattime FROM DUAL; END$$ DELIMITER ;
❹ mysql 存储过程怎样实现根据判断当前时间是否属于某个时间段修改数据库字段值
#创建存储过程
drop procere if exists test;
create procere test()
BEGIN
create table tmp1(startdate datetime,enddate datetime);
insert into tmp1 select startdate,enddate from d where startdate<=curdate() and enddate>=curdate();
update d set state=1 where startdate in(select startdate from tmp1) and enddate in(select enddate from tmp1);
update d set state=2 where startdate not in(select startdate from tmp1) and enddate not in(select enddate from tmp1);
drop table tmp1;
end;
#调用存储过程
call test();
思路:
创建一张表,先将当前时间与表内时间对比,如果当前时间在哪一行数据的开始时间范围和结束时间范围内则将数据插入tmp1表,进行update,将开始时间和结束时间都等于tmp1表内的startdate和enddate时改变该行state=1,不等于则改变该行state=2,删除使用过的tmp1表,结束。
注意:由于没有一个主键值,这里采用where startdate not in(select startdate from tmp1) and enddate not in(select enddate from tmp1)以及 where startdate in(select startdate from tmp1) and enddate in(select enddate from tmp1)并不是很好的选择。
❺ mysql存储过程里面怎样定义日期类型的参数这两个日期参数是当条件赋值进去的,应该带@符号求解
和java对应的是
java.sql.Date和 java.sql.Timestamp
~~
❻ mysql 存储过程
.关于MySQL的存储过程
存储过程是数据库存储的一个重要的功能,但是MySQL在5.0以前并不支持存储过程,这使得MySQL在应用上大打折扣。好在MySQL 5.0终于开始已经支持存储过程,这样即可以大大提高数据库的处理速度,同时也可以提高数据库编程的灵活性。
MySQL存储过程的创建
(1).格式
MySQL存储过程创建的格式:CREATE PROCEDURE过程名([过程参数[,...]])
[特性...]过程体
这里先举个例子:
mysql>DELIMITER//
mysql>CREATEPROCEDUREproc1(OUTsint)
->BEGIN
->SELECTCOUNT(*)INTOsFROMuser;
->END
->//
mysql>DELIMITER;
- 注:
(1)这里需要注意的是DELIMITER //和DELIMITER ;两句,DELIMITER是分割符的意思,因为MySQL默认以";"为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将";"当做存储过程中的代码,不会执行这些代码,用完了之后要把分隔符还原。
(2)存储过程根据需要可能会有输入、输出、输入输出参数,这里有一个输出参数s,类型是int型,如果有多个参数用","分割开。
(3)过程体的开始与结束使用BEGIN与END进行标识。
❼ MySQL和SQL Server存储过程写法上有什么区别
一、多数指令是相同的,包括创建和修正存储过程的指令。
二、很多细微的指令有不同,具体如下(不仅):
1 mysql支持enum,和set类型,sql server不支持。
2 mysql不支持nchar,nvarchar,ntext类型。
3 mysql的递增语句是AUTO_INCREMENT,而mssql是identity(1,1)。
MYSQL:create table basic(id int key auto_increment,name varchar(20));
MSSQL: create table basic(id int identity(1,1) , name varchar(20))
4 msms默认到处表创建语句的默认值表示是((0)),而在mysql里面是不允许带两括号的。
5 mysql需要为表指定存储类型。
6 mssql识别符是[],[type]表示他区别于关键字(可选用来包含表名、字段名),但是mysql却是 `(重音符,也就是按键1左边的那个符号)。
7 mssql支持getdate()方法获取当前时间日期,但是mysql里面可以分日期类型和时间类型,获取当前日期是cur_date(),当前完整时间是 now()函数。
8 mssql不支持replace into 语句,但是在最新的sql20008里面,也支持merge语法。
❽ mysql存储过程:
dayofyear不是mysql自有的函数,要看你的存储过程具体是怎么定义的了,所谓因地制宜。。。
_date应该是一个变量,now()应该是获取当前时间,这个是可以猜到的
dayofyear(_date)就是将_date这个变量格式化为定义好的dayofyear格式的
然后再将(now())-dayofyear(_date)整体格式化为dayofyear格式
不知道这样说你能明白不?或者把完整的存储过程贴出来看下就知道了
❾ mysql存储过程怎么把日期时间转时间戳
UNIX_TIMESTAMP
SELECT UNIX_TIMESTAMP('2015-04-29')