如何更新datetime字段以仅包含日期或时间部分

Cod*_*olf 2 sql firebird

如何更新包含日期/时间信息的字段以仅包含数据的日期部分?类似于以下内容:

update [EVENTS]
  SET [EVENT_DATE] = DATEADD(dd, 0, DATEDIFF(dd, 0, [EVENT_DATE])
  WHERE EVENT_NUM = '8592'
Run Code Online (Sandbox Code Playgroud)

我还需要得到相当于将它设置为时间组件?

Mar*_*eel 5

您可以截断TIMESTAMPDATETIME铸造它:

cast(EVENT_DATE as DATE)
cast(EVENT_DATE as TIME)
Run Code Online (Sandbox Code Playgroud)

"Interbase 6嵌入式SQL指南",第177页的"从SQL数据类型转换为datetime数据类型 "一节中也记录了这一点.本手册可从Firebird网站获得.

这仅适用于方言3.如果您仍在使用方言1数据库,则需要使用中间强制转换VARCHAR(具有特定于10或11的区域设置),如在Maxims中回答剥离时间部分.这是因为DATE在方言1中实际上是一个时间戳(而不仅仅是一个日期).