我有一个SQL表,其中包含以下格式的时间戳:
2022-02-07 12:57:45.000
在SQL Server中,您可以将其转换为浮点日期序列号(从1900-01-01开始的天数):
select convert(float, my_timestamp_field) as float_serial_number
的输出为:
float_serial_number | 44597.5401041667 |
---|
您可以使用datediff
中的这些-(秒,毫秒,纳秒)来计算小数差,并将其除以相应的分母
set mydate='2022-02-07 12:57:45.000'::timestamp;
select datediff(seconds, '1900-01-01', $mydate)::float/86400
下面是执行此工作的sql函数
create or replace function dayfloat_ts(ts TIMESTAMP)
returns float
language sql
as
$$
(datediff(day, '1900-01-01', TS)::float +
(datediff(nanoseconds, '1900-01-01', TS)::float -
datediff(nanoseconds, '1900-01-01', date_trunc(day, TS)))::float / 86400000000000::float)
$$;