如何更新包含日期/时间信息的字段以仅包含数据的日期部分?如下所示:
update [EVENTS]
SET [EVENT_DATE] = DATEADD(dd, 0, DATEDIFF(dd, 0, [EVENT_DATE])
WHERE EVENT_NUM = '8592'
我还需要得到相当于将它设置为时间组件?
答案 0 :(得分:5)
您可以通过投射将TIMESTAMP
截断为DATE
或TIME
:
cast(EVENT_DATE as DATE)
cast(EVENT_DATE as TIME)
“Interbase 6嵌入式SQL指南”中也记录了这一点,从SQL数据类型转换为datetime数据类型第182页。本手册可从Firebird网站获取。
这仅适用于方言3.如果您仍在使用方言1数据库,则需要使用中间强制转换为VARCHAR
(区域设置特定长度为10或11),如{{3剥去时间部分。这是因为方言1中的DATE
实际上是时间戳(而不仅仅是日期)。
答案 1 :(得分:2)
您可以使用CAST()函数:
update EVENTS
set EVENT_DATE = cast(cast(EVENT_DATE as varchar(11)) as date)
where EVENT_NUM = '8592'