CURRENT_TIMESTAMP等别名。如
mysql> SELECT NOW(),SYSDATE(),CURRENT_TIMESTAMP;
+---------------------+---------------------+---------------------+
| NOW() | SYSDATE() | CURRENT_TIMESTAMP |
+---------------------+---------------------+---------------------+
| 2014-08-24 14:58:23 | 2014-08-24 14:58:23 | 2014-08-24 14:58:23 |
+---------------------+---------------------+---------------------+
如果想得到不包括时间部分的当前日期,则可以使用CURDATE()函数,CURDATE()
函数还有CURRENT_DATE等别名。如
mysql> SELECT CURDATE(),CURRENT_DATE ;
+------------+--------------+
| CURDATE() | CURRENT_DATE |
+------------+--------------+
| 2014-08-24 | 2014-08-24 |
+------------+--------------+
如果想得到不包括日期部分的当前时间,则可以使用CURTIME()函数,CURTIME ()
函数还有CURRENT_TIME等别名。
mysql> SELECT CURTIME(),CURRENT_TIME;
+-----------+--------------+
| CURTIME() | CURRENT_TIME |
+-----------+--------------+
| 15:03:56 | 15:03:56 |
+-----------+--------------+
时间增减运算
MYSQL中提供了DATE_ADD()函数用于进行日期时间的加法运算,这个函数还有一个别名为ADDDATE(),、DATE_ADD()函数的参数格式如下:
DATE_ADD (date,INTERVAL expr type)其中参数date为待计算的日期;参数expr为待进行加法运算的增量,它可以是数值类型
或者字符串类型,取决于type参数的取值;参数type则为进行加法运算的单位,type参数可选值以及对应的expr参数的格式如下表:
type参数值expr参数的格式说明
MICROSECOND 数值类型 以微秒为计算单位
SECOND 数值类型 以秒为计算单位
MINUTE 数值类型 以分钟为计算单位
HOUR 数值类型 以小时为计算单位
DAY 数值类型 以天为计算单位
WEEK 数值类型 以周为计算单位
MONTH 数值类型 以月为计算单位
QUARTER 数值类型 以季度为计算单位
YEAR 数值类型 以年为计算单位
SECOND_MICROSECOND 字符串类型,格式为:'SECONDS.MICROSECONDS'
以秒、微秒为计算单位,要求expr参数必须是“秒.微秒”的格式,比如“30.10”表示增加30秒10微秒。
MINUTE_MICROSECOND 字符串类型,格式为:'MINUTES.MICROSECONDS'
以分钟、毫秒为计算单位,要求expr参数必须是“分钟.微秒”的格式,比如“30.10”表示增加30分钟10微秒。
MINUTE_SECOND 字符串类型,格式为:'MINUTES:SECONDS'
以分钟、秒为计算单位,要求expr参数必须是“分钟:秒”的格式,比如“30:10”表示增加30分钟10秒。
HOUR_MICROSECOND 字符串类型,格式为:'HOURS.MICROSECONDS'
以小时、微秒为计算单位,要求expr参数必须是“小时.微秒”的格式,比如“30.10”表示增加30小时10微秒。
HOUR_SECOND 字符串类型,格式为:'HOURS:MINUTES:SECONDS'
以小时、分钟、秒为计算单位,要求expr参数必须是“小时:分钟:秒”的格式,比如“1:30:10”表示增加1小时30分钟10秒。
HOUR_MINUTE 字符串类型,格式为:'HOURS:MINUTES'
以小时、秒为计算单位,要求expr参数必须是“小时:秒”的格式,比如“30:10”表示增加30小时10秒。
DAY_MICROSECOND 字符串类型,格式为:'DAYS.MICROSECONDS'
以天、微秒为计算单位,要求expr参数必须是“天.微秒”的格式,比如“30.10”表示增加30天10微秒。
DAY_SECOND 字符串类型,格式为:'DAYSHOURS:MINUTES:SECONDS'
以天、小时、分钟、秒为计算单位,要求expr参数必须是“天小时:分钟:秒”的格式,比如“1 3:28:36”表示增加1天3小时28分钟36秒。
DAY_MINUTE 字符串类型,格式为:'DAYSHOURS:MINUTES'
以天、小时、分钟为计算单位,要求expr参数必须是“天小时:分钟”的格式,比如“1 3:15”表示增加1天3小时15分钟。
DAY_HOUR 字符串类型,格式为:'DAYS HOURS'
以天、小时为计算单位,要求expr参数必须是“天小时”的格式,比如“30 10”表示增加30天10小时。
YEAR_MONTH 字符串类型,格式为:'YEARS-MONTHS'
以年、月为计算单位,要求expr参数必须是“年-月”的格式,比如“2-8”表示增加2年8个月。
表中前九种用法都非常简单,比如DATE_ADD(date,INTERVAL 1 HOUR)就可以得到在
日期date基础上增加一小时后的日期时间,而DATE_ADD(date,INTERVAL 1WEEK)就可以
得到在日期date基础上增加一周后的日期时间。下面的SQL语句用来计算每个人出生一周、
两个月以及5个季度后的日期:
SELECT FBirthDay,
DATE_ADD(FBirthDay,INTERVAL 1 WEEK) as w1,
DATE_ADD(FBirthDay,INTERVAL 2 MONTH) as m2,
DATE_ADD(FBirthDay,INTERVAL 5 QUARTER) as q5
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FBirthDay w1 m2 q5
1981-03-22 00:00:00 1981-03-29 00:00:00 1981-05-22 00:00:00 1982-06-22 00:00:00
1987-01-18 00:00:00 1987-01-25 00:00:00 1987-03-18 00:00:00 1988-04-18 00:00:00
1987-11-08 00:00:00 1987-11-15 00:00:00 1988-01-08 00:00:00 1989-02-08 00:00:00
1982-07-12 00:00:00 1982-07-19 00:00:00 1982-09-12 00:00:00 1983-10-12 00:00:00
1983-02-16 00:00:00 1983-02-23 00:00:00 1983-04-16 00:00:00 1984-05-16 00:00:00
1984-08-07 00:00:00 1984-08-14 00:00:00 1984-10-07 00:00:00 1985-11-07 00:00:00
1980-01-09 00:00:00 1980-01-16 00:00:00 1980-03-09 00:00:00 1981-04-09 00:00:00
1972-07-18 00:00:00 1972-07-25 00:00:00 1972-09-18 00:00:00 1973-10-18 00:00:00
相对于前九种用法来说,后面几种用法就相对复杂一些,需要根据格式化的类型来决定
expr参数的值。比如如果想为日期增加3天2小时10分钟,那么就可以如下使用DATE_ADD()
函数:
DATE_ADD(date,INTERVAL '3 2:10' DAY_MINUTE)
比如下面的SQL语句分别计算出生日期后3天2小时10分钟、1年6个月的日期时间:
SELECT FBirthDay,
DATE_ADD(FBirthDay,INTERVAL '3 2:10' DAY_MINUTE) as dm,
DATE_ADD(FBirthDay,INTERVAL '1-6' YEAR_MONTH) as ym
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FBirthDay dm ym
1981-03-22 00:00:00 1981-03-25 02:10:00 1982-09-22 00:00:00
1987-01-18 00:00:00 1987-01-21 02:10:00 1988-07-18 00:00:00
1987-11-08 00:00:00 1987-11-11 02:10:00 1989-05-08 00:00:00
1982-07-12 00:00:00 1982-07-15 02:10:00 1984-01-12 00:00:00
1983-02-16 00:00:00 1983-02-19 02:10:00 1984-08-16 00:00:00
1984-08-07 00:00:00 1984-08-10 02:10:00 1986-02-07 00:00:00
1980-01-09 00:00:00 1980-01-12 02:10:00 1981-07-09 00:00:00
1972-07-18 00:00:00 1972-07-21 02:10:00 1974-01-18 00:00:00
几乎所有版本的MYSQL都支持DATE_ADD()函数的前九种用法,但是MYSQL的早期
版本不完全支持DATE_ADD()函数的后几种用法,不过在MYSQL的早期版本中可以嵌套调用
DATE_ADD()函数来实现后几种用法的效果。下面的SQL语句使用嵌套函数的方式来分别计算出
生日期后1年6个月的日期时间:
SELECT FBirthDay,
DATE_ADD(DATE_ADD(FBirthDay,INTERVAL 1 YEAR),INTERVAL 6 MONTH) as dm
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FBirthDay dm
1981-03-22 00:00:00 1982-09-22 00:00:00
1987-01-18 00:00:00 1988-07-18 00:00:00
1987-11-08 00:00:00 1989-05-08 00:00:00
1982-07-12 00:00:00 1984-01-12 00:00:00
1983-02-16 00:00:00 1984-08-16 00:00:00
1984-08-07 00:00:00 1986-02-07 00:00:00
1980-01-09 00:00:00 1981-07-09 00:00:00
1972-07-18 00:00:00 1974-01-18 00:00:00
DATE_ADD()函数不仅可以用来在日期基础上增加指定的时间段,而且还可以在日期基础
上减少指定的时间段,只要在expr参数中使用负数就可以,下面的SQL语句用来计算每个人出
生一周、两个月以及5个季度前的日期:
SELECT FBirthDay,
DATE_ADD(FBirthDay,INTERVAL -1 WEEK) as w1,
DATE_ADD(FBirthDay,INTERVAL -2 MONTH) as m2,
DATE_ADD(FBirthDay,INTERVAL -5 QUARTER) as q5
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FBirthDay w1 m2 q5
1981-03-22 00:00:00 1981-03-15 00:00:00 1981-01-22 00:00:00 1979-12-22 00:00:00
1987-01-18 00:00:00 1987-01-11 00:00:00 1986-11-18 00:00:00 1985-10-18 00:00:00
1987-11-08 00:00:00 1987-11-01 00:00:00 1987-09-08 00:00:00 1986-08-08 00:00:00
1982-07-12 00:00:00 1982-07-05 00:00:00 1982-05-12 00:00:00 1981-04-12 00:00:00
1983-02-16 00:00:00 1983-02-09 00:00:00 1982-12-16 00:00:00 1981-11-16 00:00:00
1984-08-07 00:00:00 1984-07-31 00:00:00 1984-06-07 00:00:00 1983-05-07 00:00:00
1980-01-09 00:00:00 1980-01-02 00:00:00 1979-11-09 00:00:00 1978-10-09 00:00:00
1972-07-18 00:00:00 1972-07-11 00:00:00 1972-05-18 00:00:00 1971-04-18 00:00:00
在MYSQL中提供了DATE_SUB()函数用于计算指定日期前的特定时间段的日
期,其效果和在DATE_ADD()函数中使用负数的expr参数值的效果一样,其用法也和
DATE_ADD()函数几乎相同。下面的SQL语句用来计算每个人出生一周、两个月以及3天2小
时10分钟前的日期:
SELECT FBirthDay,
DATE_SUB(FBirthDay,INTERVAL 1 WEEK) as w1,
DATE_SUB(FBirthDay,INTERVAL 2 MONTH) as m2,
DATE_SUB(FBirthDay, INTERVAL '3 2:10' DAY_MINUTE) as dm
FROM T_Person
执行完毕我们就能在输出结果中看到下面的执行结果:
FBirthDay w1 m2 dm
1981-03-22 00:00:00 1981-03-15 00:00:00 1981-01-22 00:00:00 1981-03-18 21:50:00
1987-01-18 00:00:00 1987-01-11 00:00:00 1986-11-18 00:00:00 1987-01-14 21:50:00
1987-11-08 00:00:00 1987-11-01 00:00:00 1987-09-08 00:00:00 1987-11-04 21:50:00
1982-07-12 00:00:00 1982-07-05 00:00:00 1982-05-12 00:00:00 1982-07-08 21:50:00
1983-02-16 00:00:00 1983-02-09 00:00:00 1982-12-16 00:00:00 1983-02-12 21:50:00
1984-08-07 00:00:00 1984-07-31 00:00:00 1984-06-07 00:00:00 1984-08-03 21:50:00
1980-01-09 00:00:00 1980-01-02 00:00:00 19
转载请注明:谷谷点程序 » mysql 中时间日期函数