加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL中与日期和时间相关的重要函数日期函数有什么

发布时间:2023-05-26 14:09:28 所属栏目:MsSql教程 来源:
导读:这篇文章我们来了解“SQL中与日期和时间相关的重要函数日期函数有哪些”的内容,小编通过实际的案例向大家展示了操作过程,简单易懂,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习
这篇文章我们来了解“SQL中与日期和时间相关的重要函数日期函数有哪些”的内容,小编通过实际的案例向大家展示了操作过程,简单易懂,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习吧,希望对大家学习或工作能有帮助。
 
SQL 日期函数
 
 下面的列表中是 SQL 中所有与日期和时间相关的重要函数。你所用的 RDBMS 可能会支持更多其他的函数。下面的列表基于 MySQL 关系型数据库管理系统。
 
名称 描述
 
ADDDATE() 增加日期
 
ADDTIME() 增加时间
 
CONVERT_TZ() 将当前时区更改为另一时区
 
CURDATE() 返回当前日期
 
CURRENT_DATE(), CURRENT_DATE CURDATE() 的别名
 
CURRENT_TIME(), CURRENT_TIME CURTIME() 的别名
 
CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP NOW() 的别名
 
CURTIME() 返回当前时间
 
DATE_ADD() 将两个日期相加
 
DATE_FORMAT() 按照指定格式格式化日期
 
DATE_SUB() 将两个日期相减
 
DATE() 从 date 或者 datetime 表达式中提取出日期部分
 
DATEDIFF() 将两个日期相减
 
DAY() DAYOFMONTH() 的别名
 
DAYNAME() 返回某天在用星期中的名称
 
DAYOFMONTH() 返回某天是当月的第几天 (1-31)
 
DAYOFWEEK() 返回某天是该星期的第几天
 
DAYOFYEAR() 返回某天是一年中的第几天(1-366)
 
EXTRACT 提取日期中的某一部分
 
FROM_DAYS() 将天数转换为日期
 
FROM_UNIXTIME() 将某个日期格式化为 UNIX 时间戳
 
HOUR() 提取小时
 
LAST_DAY 返回参数日期所在月份的最后一天
 
LOCALTIME(), LOCALTIME NOW() 的别名
 
LOCALTIMESTAMP, LOCALTIMESTAMP() NOW() 的别名
 
MAKEDATE() 利用年份和某天在该年所处的天数来创建日期
 
MAKETIME MAKETIME()
 
MICROSECOND() 由参数返回微秒
 
MINUTE() 由参数返回分钟
 
MONTH() 返回日期参数的月份
 
MONTHNAME() 返回月份的名字
 
NOW() 返回当前日期和时间
 
PERIOD_ADD() 向年月格式的日期数据之间添加一段时间
 
PERIOD_DIFF() 返回两个年月格式的日期数据之间的月份数
 
QUARTER() 返回日期参数所在的季度
 
SEC_TO_TIME() 将秒数转换为 'HH:MM:SS' 格式
 
SECOND() 返回参数中的秒数 (0-59)
 
STR_TO_DATE() 将字符串转换为日期数据
 
SUBDATE() 以三个参数调用的时候是 DATE_SUB() 的同义词
 
SUBTIME() 减去时间
 
SYSDATE() 返回函数执行的时的时刻
 
TIME_FORMAT() 格式化时间
 
TIME_TO_SEC() 将时间参数转换为秒数
 
TIME() 返回参数表达式中的时间部分
 
TIMEDIFF() 将两个时间相减
 
TIMESTAMP() 只有一个参数时,该函数返回 date 或者 datetime 表达式。当有两个参数时,将两个参数相加。
 
TIMESTAMPADD() 在 datetime 表达式上加上一段时间
 
TIMESTAMPDIFF() 在 datetime 表达式上减去一段时间
 
TO_DAYS() 将日期参数转换为天数
 
UNIX_TIMESTAMP() 返回 UNIX 时间戳
 
UTC_DATE() 返回当前 UTC 日期
 
UTC_TIME() 返回当前 UTC 时间
 
UTC_TIMESTAMP() 返回当前 UTC 日期和时间
 
WEEK() 返回参数的星期数
 
WEEKDAY() 返回日期参数时一个星期中的第几天
 
WEEKOFYEAR() 返回日期参数是日历上的第几周 (1-53)
 
YEAR() 返回日期参数中的年份
 
YEARWEEK() 返回年份和星期
 
ADDDATE(date, INTERVAL expr unit), ADDDATE(expr, days)
 
 如果调用时第二个参数为 INTERVAL 形式的话,ADDDATE() 就是 DATE_ADD() 的同义词。同样的情况下,SUBDATE() 是 DATE_SUB() 的同义词。有关 INTERVAL 单位参数的信息,见有关 DATE_ADD() 的讨论。
 
mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);
 
+---------------------------------------------------------+
 
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
 
+---------------------------------------------------------+
 
| 1998-02-02                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT ADDDATE('1998-01-02', INTERVAL 31 DAY);
 
+---------------------------------------------------------+
 
| ADDDATE('1998-01-02', INTERVAL 31 DAY)                  |
 
+---------------------------------------------------------+
 
| 1998-02-02                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
 如果调用时第二个参数为天数形式的话,则 MySQL 会将其作为整数加到 expr 上。
 
mysql> SELECT ADDDATE('1998-01-02', 31);
 
+---------------------------------------------------------+
 
| DATE_ADD('1998-01-02', INTERVAL 31 DAY)                 |
 
+---------------------------------------------------------+
 
| 1998-02-02                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
ADDTIME(expr1,expr2)
 
 ADDTIME() 将 expr2 加到 expr1 上,并返回结果。expr1 为 time 或者 datetime 表达式,expr2 为 time 表达式。
 
mysql> SELECT ADDTIME('1997-12-31 23:59:59.999999','1 1:1:1.000002');
 
+---------------------------------------------------------+
 
| DATE_ADD('1997-12-31 23:59:59.999999','1 1:1:1.000002') |
 
+---------------------------------------------------------+
 
| 1998-01-02 01:01:01.000001                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
CONVERT_TZ(dt,from_tz,to_tz)
 
 该函数将 datetime 类型的值 dt 的时区从 from_dt 转换为 to_dt,并返回结果。如果参数无效,则函数返回 NULL。
 
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET');
 
+---------------------------------------------------------+
 
| CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')           |
 
+---------------------------------------------------------+
 
| 2004-01-01 13:00:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00');
 
+---------------------------------------------------------+
 
| CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00')     |
 
+---------------------------------------------------------+
 
| 2004-01-01 22:00:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
CURDATE()
 
 以 'YYYY-MM-DD'(字符串) 或者 YYYYMMDD(数值) 的形式返回当前日期, 具体形式取决于函数处于字符串还是数值型的上下文环境中。
 
mysql> SELECT CURDATE();
 
+---------------------------------------------------------+
 
| CURDATE()                                               |
 
+---------------------------------------------------------+
 
| 1997-12-15                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT CURDATE() + 0;
 
+---------------------------------------------------------+
 
| CURDATE() + 0                                           |
 
+---------------------------------------------------------+
 
| 19971215                                                |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
CURRENT_DATE and CURRENT_DATE()
 
 CURRENT_DATE 和 CURRENT_DATE() 是 CURDATE() 的别名。
 
 
CURTIME()
 
 以 'HH:MM:SS'(字符串) 或者 HHMMSS(数值) 的形式返回当前时间, 具体形式取决于函数处于字符串还是数值型的上下文环境中。该函数按照当前时区来表示返回值。
 
mysql> SELECT CURTIME();
 
+---------------------------------------------------------+
 
| CURTIME()                                               |
 
+---------------------------------------------------------+
 
| 23:50:26                                                |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT CURTIME() + 0;
 
+---------------------------------------------------------+
 
| CURTIME() + 0                                           |
 
+---------------------------------------------------------+
 
| 235026                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
CURRENT_TIME and CURRENT_TIME()
 
 CURRENT_TIME 和 CURRENT_TIME() 是 CURTIME() 的别名。
 
 
CURRENT_TIMESTAMP and CURRENT_TIMESTAMP()
 
 CURRENT_TIMESTAMP 和 CURRENT_TIMESTAMP() 是 NOW() 的别名。
 
 
DATE(expr)
 
 提取 date 表达式或者 datetime 表达式中的日期部分。
 
mysql> SELECT DATE('2003-12-31 01:02:03');
 
+---------------------------------------------------------+
 
| DATE('2003-12-31 01:02:03')                             |
 
+---------------------------------------------------------+
 
|  2003-12-31                                             |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DATEDIFF(expr1,expr2)
 
 DATEDIFF() 返回 expr1 和 expr2 的差,以天数的形式表示。expr1 和 expr2 应为 date 或者 datetime 表达式。只有参数的日期部分参与了计算。
 
mysql> SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
 
+---------------------------------------------------------+
 
| DATEDIFF('1997-12-31 23:59:59','1997-12-30')            |
 
+---------------------------------------------------------+
 
| 1                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)
 
 这些函数进行有关日期的算术运算。date 是一个 DATETIME 或者 DATE 类型的值,指明了起始时间。expr 表达式则是 date 要增加或者减去的时间间隔。expr 是一个字符串,可以以 '-' 开始来表示负时间区间。 unit 是一个关键词,指明了expr 的单位。
 
 INTERVAL 关键字和 unit(单位)指示符不区分大小写。
 
 下表列出了对于每种单位,expr 应有的形式。
 
unit 值 expr 应有的格式
 
MICROSECOND 微秒
 
SECOND 秒
 
MINUTE 分钟
 
HOUR 小时
 
DAY 天
 
WEEK 星期
 
MONTH 月
 
QUARTER 季度
 
YEAR 年
 
SECOND_MICROSECOND '秒.微秒'
 
MINUTE_MICROSECOND '分.微秒'
 
MINUTE_SECOND '分:秒'
 
HOUR_MICROSECOND '小时.微秒'
 
HOUR_SECOND '时:分:秒'
 
HOUR_MINUTE '时:分'
 
DAY_MICROSECOND '天.微秒'
 
DAY_SECOND '天 时:分:秒'
 
DAY_MINUTE '天 时:分'
 
DAY_HOUR '天 时'
 
YEAR_MONTH '年-月'
 
 QUARTER 和 WEEK 自 MySQL 5.0.0 起受到支持。
 
mysql> SELECT DATE_ADD('1997-12-31 23:59:59',
 
    -> INTERVAL '1:1' MINUTE_SECOND);
 
+---------------------------------------------------------+
 
| DATE_ADD('1997-12-31 23:59:59', INTERVAL...             |
 
+---------------------------------------------------------+
 
| 1998-01-01 00:01:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT DATE_ADD('1999-01-01', INTERVAL 1 HOUR);
 
+---------------------------------------------------------+
 
| DATE_ADD('1999-01-01', INTERVAL 1 HOUR)                 |
 
+---------------------------------------------------------+
 
| 1999-01-01 01:00:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DATE_FORMAT(date,format)
 
 根据格式字符串对日期值进行格式化。
 
 下面这些占位符可以用在格式字符串中,'%' 必须出现在特定的格式字符之前。
 
占位符 描述
 
%a 简写的星期名称(Sun..Sat)
 
%b 简写的月份名称 (Jan..Dec)
 
%c 月份,以数值形式表示(0..12)
 
%D 月份中的日期,带有英文后缀(0th,1st,2nd,3rd 等等)
 
%d 月份中的日期,以数值表示 (00..31)
 
%e 月份中的日期,以数值表示 (0..31)
 
%f 微秒(000000..999999)
 
%H 小时(00..23)
 
%h 小时(01..12)
 
%I 小时(01..12)
 
%i 分钟,以数值表示(00..59)
 
%j 一年中的第几天(001..366)
 
%k 小时(0..23)
 
%l 小时(1..12)
 
%M 月份的名称(January..December)
 
%m 月份,以数值形式表示(00..12)
 
%p AM 或者 PM
 
%r 时间,12 小时制(hh:mm:ss followed by AM or PM)
 
%S 秒(00..59)
 
%s 秒(00..59)
 
%T 时间,24小时制(hh:mm:ss)
 
%U 星期(00..53),此处星期日为一周的第一天
 
%u 星期(00..53),此处星期一为一周的第一天
 
%V 星期(01..53),此处星期日为一周的第一天;与 %X 一起使用。
 
%v 星期(01..53),此处星期一为一周的第一天;与 %x 一起使用。
 
%W 一周中日期的名称(Sunday..Saturday)
 
%w 一周中的第几天(0=Sunday..6=Saturday)
 
%X 以星期日为第一天的周所处的年份,四位数字表示;同 %V 一起使用。
 
%x 以星期一为第一天的周所处的年份,四位数字表示;同 %v 一起使用。
 
%Y 年份,四位数字表示。
 
%y 年份,两位数字表示。
 
%% % 字面值
 
%x x,针对任何以上没有列出的情况。
 
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
 
+---------------------------------------------------------+
 
| DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y')          |
 
+---------------------------------------------------------+
 
| Saturday October 1997                                   |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00'
 
    -> '%H %k %I %r %T %S %w');
 
+---------------------------------------------------------+
 
| DATE_FORMAT('1997-10-04 22:23:00.......                 |
 
+---------------------------------------------------------+
 
|  22 22 10 10:23:00 PM 22:23:00 00 6                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DATE_SUB(date,INTERVAL expr unit)
 
 同 DATE_ADD() 函数相似。
 
 
DAY(date)
 
 DAY() 是 DAYOFMONTH() 的别名。
 
 
DAYNAME(date)
 
 返回 date 在星期中的名称。
 
mysql> SELECT DAYNAME('1998-02-05');
 
+---------------------------------------------------------+
 
| DAYNAME('1998-02-05')                                   |
 
+---------------------------------------------------------+
 
| Thursday                                                |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DAYOFMONTH(date)
 
 返回 date 是当月的第几天,范围为 0 到 31。
 
mysql> SELECT DAYOFMONTH('1998-02-03');
 
+---------------------------------------------------------+
 
| DAYOFMONTH('1998-02-03')                                |
 
+---------------------------------------------------------+
 
| 3                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DAYOFWEEK(date)
 
 返回 date 是其所在星期的第几天(1 = Sunday, 2 = Monday,.., 7 = Saturday),这里一星期中日期的名称与数字的对应关系符合 ODBC 标准。
 
mysql> SELECT DAYOFWEEK('1998-02-03');
 
+---------------------------------------------------------+
 
|DAYOFWEEK('1998-02-03')                                  |
 
+---------------------------------------------------------+
 
| 3                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
DAYOFYEAR(date)
 
 返回 date 是当年的第几天,范围为 1 到 366。
 
mysql> SELECT DAYOFYEAR('1998-02-03');
 
+---------------------------------------------------------+
 
| DAYOFYEAR('1998-02-03')                                 |
 
+---------------------------------------------------------+
 
| 34                                                      |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
EXTRACT(unit FROM date)
 
 EXTRACT() 与 DATE_ADD() 和 DATE_SUB() 使用相同的表示单位的占位符,其作用是提取日期值中相应的组成部分,而不是进行日期运算。
 
mysql> SELECT EXTRACT(YEAR FROM '1999-07-02');
 
+---------------------------------------------------------+
 
| EXTRACT(YEAR FROM '1999-07-02')                         |
 
+---------------------------------------------------------+
 
| 1999                                                    |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
 
+---------------------------------------------------------+
 
| EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03')          |
 
+---------------------------------------------------------+
 
| 199907                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
FROM_DAYS(N)
 
 给出天数 N,返回 DATE 值。
 
mysql> SELECT FROM_DAYS(729669);
 
+---------------------------------------------------------+
 
| FROM_DAYS(729669)                                       |
 
+---------------------------------------------------------+
 
| 1997-10-07                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
 在使用 FROM_DAYS() 处理比较老的日期的时候应当特别小心,该函数不适用于格里高利历诞生(1582)之前的日期。
 
 
FROM_UNIXTIME(unix_timestamp), FROM_UNIXTIME(unix_timestamp,format)
 
 返回 UNIX 时间戳对应的日期值,根据函数所处的上下文环境不同,返回值得格式也不同,字符串上下文返回格式为 'YYYY-MM-DD HH:MM:SS',数值型上下文返回格式则为 YYYYMMDDHHMMSS。返回值的时区为系统当前时区。UNIX 时间戳是一种系统内部时间表示,例如 UNIX_TIMESTAMP() 的返回值。
 
 如果给定格式的话,返回结果将会根据格式字符串进行格式化,其规则同 DATE_FORMAT() 函数。
 
mysql> SELECT FROM_UNIXTIME(875996580);
 
+---------------------------------------------------------+
 
| FROM_UNIXTIME(875996580)                                |
 
+---------------------------------------------------------+
 
| 1997-10-04 22:23:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
HOUR(time)
 
 返回时间值的小时部分。对于一天中的时间来说,返回值的范围为 0 到 23。不过,TIME 类型的值可以大得多,所以 HOUR 函数可以返回比 23 大的值。
 
mysql> SELECT HOUR('10:05:03');
 
+---------------------------------------------------------+
 
| HOUR('10:05:03')                                        |
 
+---------------------------------------------------------+
 
| 10                                                      |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
LAST_DAY(date)
 
 返回 date 或者 datetime 值所在月份的最后一天。如果参数无效的话,返回 NULL。
 
mysql> SELECT LAST_DAY('2003-02-05');
 
+---------------------------------------------------------+
 
| LAST_DAY('2003-02-05')                                  |
 
+---------------------------------------------------------+
 
| 2003-02-28                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
LOCALTIME and LOCALTIME()
 
 LOCALTIME 和 LOCALTIME() 是 NOW() 的别名。
 
 
LOCALTIMESTAMP and LOCALTIMESTAMP()
 
 LOCALTIMESTAMP 和 LOCALTIMESTAMP() 是 NOW() 的别名。
 
 
MAKEDATE(year,dayofyear)
 
 给定年份和(某天在一年中)的天数,返回对应的日期值。天数必须大于 0,否则返回值为 NULL。
 
mysql> SELECT MAKEDATE(2001,31), MAKEDATE(2001,32);
 
+---------------------------------------------------------+
 
| MAKEDATE(2001,31), MAKEDATE(2001,32)                    |
 
+---------------------------------------------------------+
 
| '2001-01-31', '2001-02-01'                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
MAKETIME(hour,minute,second)
 
 根据参数给出的时、分、秒,返回对应的时间值。
 
mysql> SELECT MAKETIME(12,15,30);
 
+---------------------------------------------------------+
 
| MAKETIME(12,15,30)                                      |
 
+---------------------------------------------------------+
 
| '12:15:30'                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
MICROSECOND(expr)
 
 根据 time 或者 datetime 表达式 expr,返回微秒数,结果在 0 到 999999 之间。
 
mysql> SELECT MICROSECOND('12:00:00.123456');
 
+---------------------------------------------------------+
 
| MICROSECOND('12:00:00.123456')                          |
 
+---------------------------------------------------------+
 
| 123456                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
MINUTE(time)
 
 返回时间型值中的分钟部分,范围为 0 到 59。
 
mysql> SELECT MINUTE('98-02-03 10:05:03');
 
+---------------------------------------------------------+
 
| MINUTE('98-02-03 10:05:03')                             |
 
+---------------------------------------------------------+
 
| 5                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
MONTH(date)
 
 返回日期型值中的月份,范围为 0 到 12。
 
mysql> SELECT MONTH('1998-02-03')
 
+---------------------------------------------------------+
 
| MONTH('1998-02-03')                                     |
 
+---------------------------------------------------------+
 
| 2                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
MONTHNAME(date)
 
 返回日期型值所处月份的全名。
 
mysql> SELECT MONTHNAME('1998-02-05');
 
+---------------------------------------------------------+
 
| MONTHNAME('1998-02-05')                                 |
 
+---------------------------------------------------------+
 
| February                                                |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
NOW()
 
 返回当前的日期和时间,结果的格式为 'YYYY-MM-DD HH:MM:SS' 或者 YYYYMMDDHHMMSS,如果函数上下文环境为字符型,则返回前者,否则如果函数处于数值型的上下文环境,则返回后者。返回值的时区为系统当前时区。
 
mysql> SELECT NOW();
 
+---------------------------------------------------------+
 
| NOW()                                                   |
 
+---------------------------------------------------------+
 
| 1997-12-15 23:50:26                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
PERIOD_ADD(P,N)
 
 在时间 P(格式为 YYMM 或者 YYYYMM)上加上 N 个月,结果格式为 YYYYMM。注意,时间参数 P 并不是日期型值。
 
mysql> SELECT PERIOD_ADD(9801,2);
 
+---------------------------------------------------------+
 
| PERIOD_ADD(9801,2)                                      |
 
+---------------------------------------------------------+
 
| 199803                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
PERIOD_DIFF(P1,P2)
 
 返回时间 P1 和 P2 之间相差的月份。 P1 和 P2 的格式应为 YYMM 或者 YYYYMM。注意I,P1 和 P2 不是日期型值。
 
mysql> SELECT PERIOD_DIFF(9802,199703);
 
+---------------------------------------------------------+
 
| PERIOD_DIFF(9802,199703)                                |
 
+---------------------------------------------------------+
 
| 11                                                      |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
QUARTER(date)
 
 返回日期型值 date 所处的季度值,范围为 1 到 4。
 
mysql> SELECT QUARTER('98-04-01');
 
+---------------------------------------------------------+
 
| QUARTER('98-04-01')                                     |
 
+---------------------------------------------------------+
 
| 2                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
SECOND(time)
 
 返回时间型值中秒的部分,范围为 0 到 59。
 
mysql> SELECT SECOND('10:05:03');
 
+---------------------------------------------------------+
 
| SECOND('10:05:03')                                      |
 
+---------------------------------------------------------+
 
| 3                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
SEC_TO_TIME(seconds)
 
 将参数中的秒数转换为时分秒的格式 'HH:MM:SS' 或者 HHMMSS,如果函数所处的上下文为字符串型,则返回前者,否则如果上下文环境为数值型,则返回后者。
 
 
STR_TO_DATE(str,format)
 
 这是 DATE_FORMATE() 函数的逆函数,其参数为表示时间和日期的字符串 str 和一个格式字符串 format。如果格式字符串中既有日期又有时间,则 STR_TO_DATE() 返回 DATETIME() 型的值,否则返回日期型(DATE)或者时间型(TIME)的值。
 
mysql> SELECT STR_TO_DATE('04/31/2004', '%m/%d/%Y');
 
+---------------------------------------------------------+
 
| STR_TO_DATE('04/31/2004', '%m/%d/%Y')                   |
 
+---------------------------------------------------------+
 
| 2004-04-31                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
SUBDATE(date,INTERVAL expr unit) and SUBDATE(expr,days)
 
 当第二个参数为 INTERVAL 形式时,SUBDATE() 就是 DATE_SUB() 的别名。INTERVAL 参数中单位的信息,请见有关 DATE_ADD() 的讨论。
 
mysql> SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
 
+---------------------------------------------------------+
 
| DATE_SUB('1998-01-02', INTERVAL 31 DAY)                 |
 
+---------------------------------------------------------+
 
| 1997-12-02                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT SUBDATE('1998-01-02', INTERVAL 31 DAY);
 
+---------------------------------------------------------+
 
| SUBDATE('1998-01-02', INTERVAL 31 DAY)                  |
 
+---------------------------------------------------------+
 
| 1997-12-02                                              |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
SUBTIME(expr1,expr2)
 
 SUBTIME() 返回 expr1-expr2,结果的格式与 expr1 相同。expr1 是一个时间型(time)或者 datetime 型的表达式,expr2 是时间型值。
 
 
SYSDATE()
 
 返回当前的日期和时间,格式为 'YYYY-MM-DD HH:MM:SS' 或 YYYYMMDDHHMMSS,如果函数所处的上下文环境为字符串,则返回前者,否则如果上下文环境为数值型,则返回后者。
 
mysql> SELECT SYSDATE();
 
+---------------------------------------------------------+
 
| SYSDATE()                                               |
 
+---------------------------------------------------------+
 
| 2006-04-12 13:47:44                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIME(expr)
 
 提取时间型或者 datetime 型表达式 expr 中的时间部分,返回结果为字符串。
 
mysql> SELECT TIME('2003-12-31 01:02:03');
 
+---------------------------------------------------------+
 
| TIME('2003-12-31 01:02:03')                             |
 
+---------------------------------------------------------+
 
| 01:02:03                                                |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIMEDIFF(expr1,expr2)
 
 TIMEDIFF() 返回 expr1-expr2,结果为时间型值。expr1 和 expr2 可以为时间型或者 datetime 型表达式,不过二者必须为相同类型。
 
mysql> SELECT TIMEDIFF('1997-12-31 23:59:59.000001',
 
    -> '1997-12-30 01:01:01.000002');
 
+---------------------------------------------------------+
 
| TIMEDIFF('1997-12-31 23:59:59.000001'.....              |
 
+---------------------------------------------------------+
 
|  46:58:57.999999                                        |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIMESTAMP(expr), TIMESTAMP(expr1,expr2)
 
 只有一个参数的时候,该函数由日期型或者 datetime 型表达式返回一个 datetime 型值。有两个参数的时候,该函数将 expr2 加到日期型或 datetime 型值 expr1 上,并返回 datetime 型的结果。
 
mysql> SELECT TIMESTAMP('2003-12-31');
 
+---------------------------------------------------------+
 
| TIMESTAMP('2003-12-31')                                 |
 
+---------------------------------------------------------+
 
| 2003-12-31 00:00:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIMESTAMPADD(unit,interval,datetime_expr)
 
 将整数型的表达式 interval 加到日期型或者 datetime 型表达式 datetime_expr 上。单位由 unit 参数给出,其取值应为以下几种中的一种:FRAC_SECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER 或者 YEAR。
 
 单位 unit 可以为上述关键字中的一个,也可以添加一个 SQLTSI 前缀,例如 DAY 和 SQL_TSI_DAY 都是合法的。
 
mysql> SELECT TIMESTAMPADD(MINUTE,1,'2003-01-02');
 
+---------------------------------------------------------+
 
| TIMESTAMPADD(MINUTE,1,'2003-01-02')                     |
 
+---------------------------------------------------------+
 
| 2003-01-02 00:01:00                                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)
 
 返回日期型或者 datetime 型表达式 datetime_expr1 和 datetime_expr2 的差。结果的单位由 unit 参数给出,unit 的取值规定同 TIMESTAMPADD() 函数。
 
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
 
+---------------------------------------------------------+
 
| TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01')          |
 
+---------------------------------------------------------+
 
| 3                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIME_FORMAT(time,format)
 
 该函数使用起来类似 DATE_FORMAT() 函数,但是格式字符串 format 中只能有与小时、分钟和秒有关的那些占位符。
 
 如果时间型值的小时部分大于 23,则 %H 和 %k 格式占位符将会产生一个大于通常的 0-23 的值,其他与小时有关的占位符则会返回小时值除以 12 后的余数(modulo 12)。
 
mysql> SELECT TIME_FORMAT('100:00:00', '%H %k %h %I %l');
 
+---------------------------------------------------------+
 
| TIME_FORMAT('100:00:00', '%H %k %h %I %l')              |
 
+---------------------------------------------------------+
 
| 100 100 04 04 4                                         |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
TIME_TO_SEC(time)
 
 将时间型值转换为秒。
 
mysql> SELECT TIME_TO_SEC('22:23:00');
 
+---------------------------------------------------------+
 
| TIME_TO_SEC('22:23:00')                                 |
 
+---------------------------------------------------------+
 
| 80580                                                   |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)、
 
TO_DAYS(date)
 
 给定日期型值 date,返回天数(自公元 0 年以来的天数)。
 
mysql> SELECT TO_DAYS(950501);
 
+---------------------------------------------------------+
 
| TO_DAYS(950501)                                         |
 
+---------------------------------------------------------+
 
| 728779                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
UNIX_TIMESTAMP(), UNIX_TIMESTAMP(date)
 
 不带任何参数时,该函数返回一个 unsigned integer 型的 UNIX 时间戳(自 '1970-01-01 00:00:00' UTC 以来的秒数)。如果有一个参数 date 的话,该函数返回自 '1970-01-01 00:00:00' UTC 至 date 的秒数。date 可以是日期型的字符串、DATETIME 型的字符串、时间戳或者 YYMMDD 或 YYYYMMDD 格式的数字。
 
mysql> SELECT UNIX_TIMESTAMP();
 
+---------------------------------------------------------+
 
| UNIX_TIMESTAMP()                                        |
 
+---------------------------------------------------------+
 
| 882226357                                               |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
 
+---------------------------------------------------------+
 
| UNIX_TIMESTAMP('1997-10-04 22:23:00')                   |
 
+---------------------------------------------------------+
 
| 875996580                                               |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
UTC_DATE, UTC_DATE()
 
 返回当前 UTC 日期,格式为 'YYYY-MM-DD' 或者 YYYYMMDD,如果函数所处的上下文环境为字符串,则返回前者,否则如果上下文环境为数值型的,则返回后者。
 
mysql> SELECT UTC_DATE(), UTC_DATE() + 0;
 
+---------------------------------------------------------+
 
| UTC_DATE(), UTC_DATE() + 0                              |
 
+---------------------------------------------------------+
 
| 2003-08-14, 20030814                                    |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
UTC_TIME, UTC_TIME()
 
 返回当前 UTC 时间,格式为 'HH:MM:SS' 或者 HHMMSS,如果函数所处的上下文环境为字符串,则返回前者,否则如果上下文环境为数值型的,则返回后者。
 
mysql> SELECT UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0;
 
+---------------------------------------------------------+
 
| UTC_TIMESTAMP(), UTC_TIMESTAMP() + 0                    |
 
+---------------------------------------------------------+
 
| 2003-08-14 18:08:04, 20030814180804                     |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
WEEK(date[,mode])
 
 该函数将返回 date 所在的周是当年的第几周。两个参数的 WEEK() 函数的使你能够指明一周起始于周日还是周一,以及返回值的范围应该是 0 到 53,还是 1 到 53。如果 mode 参数被忽略,则将使用 default_week_format 系统变量。
 
Mode 一周的第一天 范围 周 1 是第一周
 
0 Sunday 0-53 该年包括一个星期天
 
1 Monday 0-53 该年包含超过 3 天
 
2 Sunday 1-53 该年包括一个星期天
 
3 Monday 1-53 该年包含超过 3 天
 
4 Sunday 0-53 该年包含超过 3 天
 
5 Monday 0-53 该年包括一个星期一
 
6 Sunday 1-53 该年包含超过 3 天
 
7 Monday 1-53 该年包括一个星期一
 
mysql> SELECT WEEK('1998-02-20');
 
+---------------------------------------------------------+
 
| WEEK('1998-02-20')                                      |
 
+---------------------------------------------------------+
 
| 7                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
WEEKDAY(date)
 
 返回 date 是其所在星期的第几天 (0 = Monday, 1 = Tuesday, . 6 = Sunday)。
 
mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
 
+---------------------------------------------------------+
 
| WEEKDAY('1998-02-03 22:23:00')                          |
 
+---------------------------------------------------------+
 
| 1                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
WEEKOFYEAR(date)
 
 返回 date 所在的周是当年的第几周,范围从 1 到 53. WEEKOFYEAR() 是一个兼容性函数,其功能同 WEEK(date, 3)相同。
 
mysql> SELECT WEEKOFYEAR('1998-02-20');
 
+---------------------------------------------------------+
 
| WEEKOFYEAR('1998-02-20')                                |
 
+---------------------------------------------------------+
 
| 8                                                       |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
YEAR(date)
 
 返回 date 的年份部分,范围为 1000 到 9999,对于日期 0 则返回 0。
 
mysql> SELECT YEAR('98-02-03');
 
+---------------------------------------------------------+
 
| YEAR('98-02-03')                                        |
 
+---------------------------------------------------------+
 
| 1998                                                    |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
YEARWEEK(date), YEARWEEK(date,mode)
 
 返回 date 所在的年份和周数。mode 参数意义与 WEEK() 函数的完全一样。对于一年中的第一周和最后一周来说,结果中的年份可能会和 date 参数中的年份不同。
 
mysql> SELECT YEARWEEK('1987-01-01');
 
+---------------------------------------------------------+
 
| YEAR('98-02-03')YEARWEEK('1987-01-01')                  |
 
+---------------------------------------------------------+
 
| 198653                                                  |
 
+---------------------------------------------------------+
 
1 row in set (0.00 sec)
 
注意,这里的周数同 WEEK() 返回的不同,因为 WEEK() 函数的返回值在给定年份的的上下文环境中得出。
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章