提问人:Misha 提问时间:9/24/2023 更新时间:9/24/2023 访问量:123
是否有函数可以在 Trino SQL 中提取日期时间变量的时间部分?
Is there a function to extract the time part of a datetime variable in Trino SQL?
问:
是否有函数可以在 Trino SQL 中提取日期时间变量的时间部分,包括纳秒? --和/或-- 是否有相应的比较运算符允许仅比较 Trino SQL 中日期时间变量的时间部分(包括纳秒)?
我知道我可以使用 HOUR()、MINUTE()、SECOND() 来提取这些元素,但我找不到一个“一次性”函数来从时间戳中提取时间。
例如,如果时间是“2020-05-11 11:15:05.123456789 +01:00”,我想知道是否有返回的函数(即没有日期部分)。我可以将日期时间转换为时间(例如,,但这不会给出小数秒。 例如,yields ,删除小数秒。'11:15:05.123456789'
CAST(my_date_time_variable as time)
CAST('2020-05-11 11:15:05.123456789 +01:00' as time)
'11:15:05'
magical_trino_sql_function('2020-05-11 11:15:05.123456789 +01:00')
-- '11:15:05.123456789'
或
magical_trino_sql_function('2020-05-11 11:15:05.123456789 +01:00')
-- 11:15:05.123456789
我为什么要这样做?
我想使用如下所示的 WHERE 语句。
WHERE magical_trino_sql_function(date_time_variable) BETWEEN 09:30:00.000000000 and 16:00:00.000000000
这是现在几乎可以工作的笨拙代码:
WHERE my_date_time_variable BETWEEN date_add('minute', 30, date_add('hour', 9, my_date_variable)) AND
date_add('hour', 16, my_date_variable)
哪里看起来像和看起来像.my_date_time_variable
2020-05-11 11:15:05.123456789 +01:00
my_date_variable
2020-05-11
我遇到的一个问题是,超过毫秒的小数秒似乎被截断了,并且生成的时间被四舍五入,所以像这样的东西被四舍五入到 ,但我不想在上面的 WHERE 语句中包含它。2020-05-11 09:29:59.999876543 +01:00
2020-05-11 09:30:00.000 +01:00
当我比较日期时,我使用类似的东西
WHERE date_variable BETWEEN date'2023-07-01' AND date'2023-07-31'
有什么东西可以将日期时间变量的时间部分与小数秒进行比较吗?例如:
WHERE my_date_time_variable BETWEEN time'09:30:00.000' AND time'16:00:00.000'
纳秒很重要,但我也有问题;看这个问题。
我搜索了 Trino 文档和典型的搜索引擎,结果是空的。我还查看了提问时出现的问题,以确保我的问题不是重复的。有些问题帮助我改进了我的问题,但我仍然有问题。
答: 暂无答案
评论
date_format()
SELECT date_format(TIMESTAMP '2023-09-25 11:22:15.456', '%H:%i:%S.%f')
SELECT date_format(TIMESTAMP '2023-01-10' 09:30:00.123456789-05:00', '%H:%i:%S.%f')
09:30:00.123000
000000
999000
0
999999999