db2 如何在SQL选择语句中将日期列转换为时间戳

jecbmhm3  于 2023-04-06  发布在  DB2
关注(0)|答案(3)|浏览(328)

我正在尝试编写一个DB2查询,它选择一个日期列,我想将它转换为时间戳。例如,该查询应该采用“mm/dd/yyyy”格式的列,并将其转换为“mm/dd/yyyy hh:mm:ss”格式的列。
例如,如果END_DT是表中的一个日期列,那么我想选择一个额外的列END_DT,但它也有一个常量值hh:mm:ss附加到它。即'1/29/2023'应该转换为'1/29/2023 11:22:33'(依此类推,对于查询的每个返回行中的每个其他END_DT值)。
我试过这样的方法:

SELECT 
    END_DT, TIMESTAMP(END_DT) AS end_dt_with_timestamp 
FROM <table>

但是查询的TIMESTAMP(END_DT)部分似乎不起作用。

igetnqfo

igetnqfo1#

你没有提到你使用的是什么平台和版本的Db2...
但请查看您的TIMESTAMP()函数版本是否支持两个参数with the second argument allowing for
expression-2必须是返回以下内置数据类型之一的值的表达式:时间、字符串或图形字符串。如果expression-2是字符或图形字符串,则其值必须是时间的有效字符串表示。有关日期和时间的字符串表示的有效格式,请参见第75页的“日期时间值的字符串表示”。
因此你所需要的就是

SELECT END_DT, TIMESTAMP(END_DT, '11:22:33') as end_dt_with_timestamp 
from <table>
disbfnqx

disbfnqx2#

您可以使用CONVERT将数据类型更改为DATETIME,然后使用DATEADD添加特定的时间戳。
2023年1月29日示例的完整代码:

SELECT DATEADD(SECOND, 33, DATEADD(MINUTE, 22, DATEADD(HOUR, 11, CONVERT(DATETIME, '2023-01-29'))))

如果没有DATEADD部分,DATETIME数据类型将自动添加时间戳'00:00:00.000'。

uwopmtnx

uwopmtnx3#

您可以添加到新转换的时间戳的任何小时,分钟和秒,你需要的

CREATE tABLE t1 (END_DT date)
INSERT INTO t1 VALUES ('29/1/2023' )
SELECT END_DT, TIMESTAMP(END_DT)  + 11 HOUR + 23 MINUTE + 53 SECOND as end_dt_with_timestamp FROM t1
结束日期END_DT_WITH_TIME STAMP
2023年1月29日2023-01-29 11:23:53

fiddle

相关问题