雪花-将时间戳转换为日期序列号



我有一个SQL表,其中包含以下格式的时间戳:

2022-02-07 12:57:45.000

在SQL Server中,您可以将其转换为浮点日期序列号(从1900-01-01开始的天数):

select convert(float, my_timestamp_field) as float_serial_number

的输出为:

tbody> <<tr>
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)
$$;

最新更新