我在oracle数据库上运行查询,并试图获取此特定事件的开始时间。日期只是作为数字存储在表中,而我唯一能够检索它的方法是使用TO_CHAR(TIMEFRAME_START)
。这给了我1574402400
的输出。
我知道这应该与11/21/2019 11:00:00 PM MST
对应,基于另一个提取相同信息的应用程序,但是我不知道它是如何进行此转换的。我需要检索其他行,并且需要能够将该输出转换为标准日期格式。
有人对我如何准确格式化原始输出有任何想法吗?
答案 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')