• 几个时间戳相关函数


    format问题注意

               1.yyyy-MM-dd HH:mm:ss是Java中的日期格式。

                  H的大小写代表24小时制和12小时制

               2.oracle中的日期格式为:
                    24小时制:yyyy-MM-dd HH24:mi:ss

                   12小时制:yyyy-MM-dd HH:mi:ss

               3.hivesql中使用的是yyyy-MM-dd HH:mm:ss格式。

               4.mysql中使用的是'%Y-%m-%d %H:%i:%S'格式。

    1.date_format()

    格式化日期时间 

    将日期/时间戳/字符串转换为日期格式 FMT 指定格式的字符串值
     语法:  DATE_FORMAT(date,format)

    1. select DATE_FORMAT('2022-07-05 14:01:35','%Y-%m-%d %H:00:00') ;
    2. //mysql输出结果 '2022-07-05 14:00:00'

    2.from_unixtime()

    时间戳数字>>>>日期

    将时间戳转数字转为特定格式的字符串

    语法:from_unixtime(int类型的值,format)   不指定格式输出为默认格式

    如果输入的int为毫秒,需要先转换为秒,使用cast(值 as int)

    1. select from_unixtime(cast(1553184000488/1000 as int),'yyyy-MM-dd HH:mm:ss')
    2. //hql输出结果 2019-03-22 00:00:00
    3. select FROM_UNIXTIME(1459338786)
    4. select FROM_UNIXTIME(1459338786,'%Y-%m-%d %H:%i:%s')
    5. //mysql输出结果 2016-03-30 19:53:06

    3.unix_timestamp()

    日期>>>>时间戳数字  

    语法:unix_timestamp()  返回当前时间的时间戳

    hql中还有一个特有的用法:unix_timestamp(date,format) 

    date 必须满足了 format的表达式才能返回相应的时间戳秒级数字

    1. select UNIX_TIMESTAMP()
    2. //mysql输出结果 1657007384
    3. select unix_timestamp("2029-05-20","yyyy-MM-dd");
    4. //hql输出结果 1653004800

     4.to_unix_timestamp()   mysql不支持此函数

    日期>>>>时间戳数字

    根据你所提供的字符串格式(在这里是’dd/MMM/yyy:HH:mm:ss Z’)将日期字符串格式化。

    语法:to_unix_timestamp(date,format)

    1. select to_unix_timestamp('16/Mar/2017:12:25:01','dd/MMM/yyy:HH:mm:ss')
    2. //hql输出结果 1489667101

    5.current_timestamp()

    返回查询计算开始时的当前时间戳,没有参数

    和mysql中的now()和sysdate()函数作用相同

    hql可以通过转换类型得到毫秒值 cast(参数 as int)

    这个函数的输出是正常时间,相对于 unix_timestamp 来说 快 8 小时。

    1. select CURRENT_TIMESTAMP()
    2. //mysql输出结果 2022-07-05 15:31:11 返回了当前时间
    3. select cast(current_timestamp() as int)
    4. //hql中输出结果将当前时间转换成了秒 1651751854

    总结:按照指定格式获取当前时间的固定搭配有两个    

    select from_unixtime(unix_timestamp(),"yyyy-MM-dd HH:mm:ss"), date_format(current_timestamp(),"yyyy-MM-dd HH:mm:ss");

    但是 1 比 2 总体慢 8 小时,所以推荐大家使用 2,尽量弃用官方声明的过时函数;

  • 相关阅读:
    什么是LL(1)、LR(0)、LR(1)文法、LR分析表—编译原理
    前言技术 VScode + 其他插件-2
    ROS2 从头开始:第 08/8回 - 使用 ROS2 生命周期节点简化机器人软件组件管理
    Sql Server 存储过程
    Node.js精进(4)——事件触发器
    ctf中ping命令执行绕过
    如何保证 HTTPS 证书的有效性?
    国考省考申论:归纳概括题,审题,找点,加工,书写,概括举措的案例
    springboot的文档, 到位
    Debain12 安装 realVNC
  • 原文地址:https://blog.csdn.net/qq_45302622/article/details/104997450