SQL --时间语句

2023-11-28  本文已影响0人  飞猪的浪漫

SELECT TO_DATE('2006-05-01 19:25:34','YYYY-MM-DD HH24:MI:SS') FROM DUAL

SELECT TO_DATE('2006-05-01 19:25','YYYY-MM-DD HH24:MI') FROM DUAL 

SELECT TO_DATE('2006-05-01 19','YYYY-MM-DD HH24') FROM DUAL

SELECT TO_DATE('2006-05-01','YYYY-MM-DD') FROM DUAL 

SELECT TO_DATE('2006-05','YYYY-MM') FROM DUAL 

SELECT TO_DATE('2006','YYYY') FROM DUAL

current_date()/current_time()

返回当前时间,某年某月某日,current_time()等同于current_date。

SELECT CURDATE()# 返回值:# '2020-10-09'

date是日期,time是具体的时间。

mysql> SELECT CURDATE();

+------------------------------------------------------+| 

CURDATE() 

+------------------------------------------------------+| 

1997-12-15 

 +------------------------------------------------------

+1 row in set (0.00 sec)

CURTIME()

根据函数究竟用于字符串或数字上下文,

选择以 'HH:MM:SS' 还是 HHMMSS 格式返回当前时间值(以当前时区来定)。  

mysql> SELECT CURTIME();

+------------------------------------------------------+| 

CURTIME()                                              

 +------------------------------------------------------+|

 23:50:26

对年,月,日进行节选:

SELECT YEAR('98-02-03')# 返回值  1998

SELECT MONTH('98-02-03')# 返回值  02

SELECT DAY('98-02-03')# 返回值  3

DATE(expr)

提取日期或日期时间表达式expr中的日期部分。

mysql> SELECT DATE('2003-12-31 01:02:03');

+------------------------------------------------------+| 

DATE('2003-12-31 01:02:03')

+------------------------------------------------------+|  

2003-12-31                                           

DATEDIFF()

语法:DATEDIFF(expr1,expr2)

DATEDIFF()将返回expr1 - expr2的值,用来表示两个日期相差的天数。expr1 和 expr2 都是日期或日期时间表达式。运算中只用到了这些值的日期部分。

SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30')

#返回结果1

date_sub()/date_add()

语法格式:

DATE_ADD(date,INTERVAL expr unit) 

DATE_SUB(date,INTERVAL expr unit)

执行日期计算的两种函数。date 是一个用来指定开始日期的 DATETIME 或 DATE 值。expr 是一种以字符串形式呈现的表达式,用来指定从开始日期增加或减少的间隔值。如果是负的间隔值,则 expr 值的第一个字符是-号。unit 是一个单位关键字,用来指定expr表达式应该采取的单位。

mysql> SELECT DATE_ADD('1998-01-02', INTERVAL 31 DAY);

+-----------------------------------------------------+| 

DATE_ADD('1998-01-02', INTERVAL 31 DAY)+-----------------------------------------------------+| 

1998-02-02

ADDTIME(expr1, expr2)

ADDTIME()将 expr2 参数加到 expr1 参数上,返回结果。expr1 是一个时间或日期时间表达式。expr2 是一个时间表达式。

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                              

+------------------------------------------------------+

时间戳的定义

时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

UNIX时间戳的0按照ISO 8601规范为 :1970-01-01 T00:00:00Z.

一个小时表示为UNIX时间戳格式为:3600秒;一天表示为UNIX时间戳为86400秒,闰秒不计算。

在大多数的UNIX系统中UNIX时间戳存储为32位,这样会引发2038年问题或Y2038。

UNIX_TIMESTAMP(date)

若无参数调用,则返回一个 Unix timestamp ('1970-01-01 00:00:00' GMT 之后的秒数) 作为无符号整数,得到当前时间戳 。

若用date 来调用 UNIX_TIMESTAMP(),它会将参数值以'1970-01-01 00:00:00' GMT后的秒数的形式返回。date 可以是一个 DATE 字符串、一个 DATETIME字符串、一个 TIMESTAMP或一个当地时间的YYMMDD或YYYMMDD格式的数字。

上一篇下一篇

猜你喜欢

热点阅读