尝试将43439.961377314816转换为date。目前我使用的代码是:
SELECT
(timestamp '1970-01-01 00:00:00 GMT' +
numtodsinterval(WRITETIMESTAMP, 'SECOND')) at time zone 'CST',
WRITETIMESTAMP
FROM
PEETM_FM.ROUTE
但我得到的结果是
01-JAN-70 06.03.59.961377315 AM CST
日期应为:
12/05/2018
4条答案
按热度按时间6kkfgxo01#
这将生成您想要的日期:
看起来您使用的是Excel日期或类似的数据。
p8ekf7hl2#
您在查询中遇到了两个问题。首先,您使用了错误的基准时间。正如@GordonLinoff所指出的,Excel日期的基准时间实际上是1900-01-01,而Excel将1900视为闰年。这本身不是Excel中的错误,而是conscious design decision复制了Lotus 1-2-3的(错误的)行为,它 * 确实 * 有这个错误。所以-在Lotus 1-2-3中它是一个错误,但在Excel中它是一个特性。:-)其次,在Excel日期中,整数部分表示自基准日期以来的天,小数部分表示一天的分数。然而,在
NUMTODSINTERVAL
调用中,您将interval_unit
参数指定为'SECOND'
;应该是'DAY'
。把这些东西放在一起我们得到
dbfiddle here
祝你好运。
hxzsmxv23#
在我看来,这是预期行为。43439秒/60/60 = 12小时,从开始时间戳开始计算大约12小时。
为什么你会认为这会给予你一个日期在2018年?
3b6akqbq4#
以下是一个适用于Chrome浏览器的Excel公式。Chrome/Edge:=((单元格/1000000-11644473600)*1000000)/86400000000+日期(1970,1,1)