DB2中的时间戳到毫秒之间的转换

时间:2011-10-06 10:57:02

标签: db2 timestamp

我有一列数据类型时间戳。现在我需要将它转换为MiiliSeconds并放入另一列。我怎样才能做到这一点。 输入格式为2011-10-04 13:54:50.455227,输出需要为1317900719

2 个答案:

答案 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是要计算的变量或列。