美文网首页
SQL --时间语句

SQL --时间语句

作者: 飞猪的浪漫 | 来源:发表于2023-11-28 21:47 被阅读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格式的数字。

    相关文章

      网友评论

          本文标题:SQL --时间语句

          本文链接:https://www.haomeiwen.com/subject/nrntgdtx.html