Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
DB2中时间戳到毫秒的转换_Db2_Timestamp - Fatal编程技术网

DB2中时间戳到毫秒的转换

DB2中时间戳到毫秒的转换,db2,timestamp,Db2,Timestamp,我有一列数据类型timestamp。现在我需要将其转换为MiiliSeconds并放入另一列。我该怎么做呢。 输入格式为2011-10-04 13:54:50.455227,输出格式为1317900719有一个名为timestampdiff的函数。对1970年1月1日使用该函数将起到其他作用,但该函数给出了近似结果。如果你想要精确,你需要用以下公式计算正确答案 create function ts2millis(t timestamp) returns bigint return ( (

我有一列数据类型timestamp。现在我需要将其转换为MiiliSeconds并放入另一列。我该怎么做呢。
输入格式为
2011-10-04 13:54:50.455227
,输出格式为
1317900719

有一个名为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))
 )
)
@

您请求的输出不是毫秒,而是相当于CLib localtime(),下面介绍如何执行此操作:

SELECT
    86400*
    (
        DAYS(TIMESTAMP(v_timestamp))
        -
        DAYS(TIMESTAMP('1970-01-01-00:00:00'))
    )
    +
    MIDNIGHT_SECONDS(timestamp(v_timestamp))
FROM
    SYSIBM.SYSDUMMY1;

其中
v_timestamp
是要计算的变量或列。

Hi,当您说要将其转换为毫秒时;离什么值还有几毫秒?它是与另一个时间戳列或常量时间戳值进行比较,还是仅从同一时间戳列中获取毫秒部分?用格式编辑了问题。我不明白您是如何获得所需输出的。我希望如果你想要ms,你至少会以50455结束。不同的月份有不同的天数(也就是毫秒),所以你不能使用固定的值。特别是因为二月的值因年份而异。