【问题标题】:Date conversion in oracleoracle中的日期转换
【发布时间】:2012-01-16 15:02:41
【问题描述】:

我有这部分查询正在转换 create_date 的值,以便可以将其与系统日期进行比较。

date_time 的数据类型为 number。

NEW_TIME(TO_DATE('1970/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss') + (date_time/86400),
        'GMT','CDT')

有人可以向我解释正在发生的转换吗? 为什么要使用1970/01/01 00:00:0086400 等以下值?

谢谢。

【问题讨论】:

    标签: sql oracle date format


    【解决方案1】:

    日期“1970/01/01 00:00:00”是 unix“纪元”的开始日期。许多系统从此时开始计算秒数。数字 86400 是一天中的秒数。 86400 = 60 秒 * 60 分钟 * 24 小时

    【讨论】:

    • Niklas 如何设置从 1970/01/01 开始?这部分查询也会导致性能下降吗?谢谢。
    【解决方案2】:

    date_time 中创建数值的任何人或任何人都将其创建为“自 1970 年 1 月 1 日 00:00 以来的秒数”。

    因此,这些值基于 1970/01/01。

    在日期上加 1,就是在加 1 天。因此,date_time 值除以一天中的秒数。 (60s * 60m * 24h = 86400s)

    当您将Date_Time / 86400 天添加到基准日期时,您将获得该值所代表的日期时间

    【讨论】:

    • 如何设置从 1970/01/01 开始?这部分查询也会导致性能下降吗?谢谢。
    【解决方案3】:
    TO_DATE('1970/01/01 00:00:00','yyyy/mm/dd hh24:mi:ss')
    

    您列中的数据可能是字符串格式1970/01/01 00:00:00to_date,您告诉Oracle 将其转换为日期格式为yyyy/mm/dd hh24:mi:ss 它仍显示为 1970/01/01 00:00:00 但它现在具有 DATE 数据类型。有关 Oracle DATE 数据类型的更多信息look here.

    86400 是以秒为单位的一天:60 seconds x 60 minutes x 24 hours = 86400

    你用它来添加一个新的一天!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-19
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多