我需要帮助弄清楚此oracle db时间戳

时间:2019-11-22 10:29:21

标签: c# sql oracle

我在oracle数据库上运行查询,并试图获取此特定事件的开始时间。日期只是作为数字存储在表中,而我唯一能够检索它的方法是使用TO_CHAR(TIMEFRAME_START)。这给了我1574402400的输出。

我知道这应该与11/21/2019 11:00:00 PM MST对应,基于另一个提取相同信息的应用程序,但是我不知道它是如何进行此转换的。我需要检索其他行,并且需要能够将该输出转换为标准日期格式。

有人对我如何准确格式化原始输出有任何想法吗?

2 个答案:

答案 0 :(得分:0)

假设该数字代表Unix时间戳,您可以将其转换为具有以下表达式的日期:

to_date('1970-01-01', 'yyyy-mm-dd') + timeframe_start / 60 /60 / 24

理论上:

  • unix时代从1970年1月1日开始

  • 在Oracle中,您可以为日期添加小数天

因此,基本上,我们将纪元时间戳转换为天数,方法是将其除以60(秒/分钟),60(每小时/分钟)和24(每天/小时),然后将其添加到代表时代开始。

然后您可以使用to_char()将结果日期格式化为所需的字符串格式:

to_char(
    to_date('1970-01-01', 'yyyy-mm-dd') + timeframe_start / 60 /60 / 24,
    'mm/dd/yyyy hh12:mi:ss am'
)

答案 1 :(得分:0)

您应该执行以下操作,因为那是UNIX时间戳:

TO_CHAR(TO_DATE('19700101000000','YYYYMMDDHH24MISS') + numtodsinterval(TO_CHAR(TIMEFRAME_START), 'SECOND'), 'MM/DD/YYYY HH:MI:SS AM')