时间处理函数

  1. 时间转换函数

  • 时间格式化函数为字符串

    1
    date_format(datetime,'%Y-%m-%d %H:%i:%s.%f')
    示例:
    1
    2
    mysql>select date_format(now(3),'%Y-%m-%d %H:%i:%s.%f')
    2023-11-10 10:23:19.388000
    说明:

    %Y-%m-%d %H:%i:%s.%f翻译一下就是 年-月-日 时:分:秒.微妙

    这里最后三位是000,是因为date_format的格式化函数中只有6位小数位。

    更多:

    https://dev.mysql.com/doc/refman/8.0/en/date-and-time-type-syntax.html

  • 时间类型转为秒数函数

    1
    TIME_TO_SEC(dateTime)

    示例:

    1
    2
    mysql>select TIME_TO_SEC('01:00:00')
    3600

    说明:

    将1小时转为秒数。支持默认格式的时间字符串,也支持时间类型(time)。

开窗函数

  • LAG函数

    1
    LAG (expression, n, default_value) OVER (PARTITION BY partition_expression ORDER BY sort_expression)
    示例:
    1
    2
    mysql>select LAG(END_DATE) OVER (ORDER BY id) AS previous_endDate , END_DATE from WORK_INSTANCES ORDER BY id WINDOW w AS (ORDER BY t);
    |2023-01-02 02:01:01 | 2023-01-02 02:07:52 |
    说明:

    lag函数用于获取查询列表的上一行中的字段数据,上面的示例就是用于获取上一行的结束时间。可用于比较行之间的数据,例如获取两行之间的时间差:

    1
    mysql> select TIME_TO_SEC(TIMEDIFF(CREATION_DATE,LAG(CREATION_DATE) OVER (ORDER BY id)))/60  from WORK_INSTANCES ORDER BY id;

    partition_expression:分组的字段

    sort_expression: 排序字段

    更多参考:

    https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_lag