Преобразование между отметкой времени в миллисекундах в DB2 - PullRequest
1 голос
/ 06 октября 2011

У меня есть столбец с меткой времени типа данных.Теперь мне нужно преобразовать его в MiiliSeconds и поместить в другой столбец.Как мне это сделать.ввод имеет формат 2011-10-04 13:54:50.455227, а вывод должен быть 1317900719

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Есть функция timestampdiff.Использование его против 1 января 1970 года будет работать иначе, но функция даст приблизительные результаты.Если вам нужна точность, вам нужно рассчитать правильный ответ, например,

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 голос
/ 24 ноября 2014

Ваш запрошенный вывод не миллисекунды, а эквивалент 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 - это переменная или столбец для расчета.

...