我有一列数据类型时间戳。现在我需要将它转换为MiiliSeconds并放入另一列。我怎样才能做到这一点。
输入格式为2011-10-04 13:54:50.455227
,输出需要为1317900719
答案 0 :(得分:2)
有一个名为timestampdiff的函数。使用它对1970年1月1日将起作用,但该函数给出近似结果。如果你想要准确性,你需要用
之类的东西来计算正确的答案create function ts2millis(t timestamp)
returns bigint
return (
(
(bigint(year(t-1970))*bigint(31556926000))+
(bigint(month(t))*bigint(2629743000))+
(bigint(day(t))*bigint(86400000))+
(bigint(hour(t))*bigint(3600000))+
(bigint(minute(t))*bigint(60000))+
(bigint(second(t))*bigint(1000))+
(bigint(microsecond(t))/bigint(1000))
)
)
@
答案 1 :(得分:1)
您请求的输出不是毫秒,但相当于CLimb本地时间(),以下是如何执行此操作:
SELECT
86400*
(
DAYS(TIMESTAMP(v_timestamp))
-
DAYS(TIMESTAMP('1970-01-01-00:00:00'))
)
+
MIDNIGHT_SECONDS(timestamp(v_timestamp))
FROM
SYSIBM.SYSDUMMY1;
其中v_timestamp
是要计算的变量或列。