如何更新包含日期/时间信息的字段以仅包含数据的日期部分?像下面这样:如何更新日期时间字段以仅包含日期或时间部分
update [EVENTS]
SET [EVENT_DATE] = DATEADD(dd, 0, DATEDIFF(dd, 0, [EVENT_DATE])
WHERE EVENT_NUM = '8592'
我还需要得到相当于把它设置为只是时间分量?
如何更新包含日期/时间信息的字段以仅包含数据的日期部分?像下面这样:如何更新日期时间字段以仅包含日期或时间部分
update [EVENTS]
SET [EVENT_DATE] = DATEADD(dd, 0, DATEDIFF(dd, 0, [EVENT_DATE])
WHERE EVENT_NUM = '8592'
我还需要得到相当于把它设置为只是时间分量?
您可以通过铸造它截断TIMESTAMP
到DATE
或TIME
:
cast(EVENT_DATE as DATE)
cast(EVENT_DATE as TIME)
这也记录了Interbase的6嵌入式SQL指南,第从SQL数据类型到datetime数据类型的转换(第181页)。本手册可从Firebird网站获得。
这只适用于方言3.如果您仍在使用方言1数据库,则需要使用中间转换为VARCHAR
(区域设置特定长度为10或11),如Maxims answer中的时间去除时间一部分。这是因为方言1中的DATE
确实是一个时间戳(而不仅仅是一个日期)。
您可以使用CAST()函数:
update EVENTS
set EVENT_DATE = cast(cast(EVENT_DATE as varchar(11)) as date)
where EVENT_NUM = '8592'
您不需要转换为varchar,直接将时间戳转换为日期! – ain
可能它取决于使用的方言和方言3的作品。我使用方言1的数据库,在那里我必须先投射到varchar,因为如果我至今为止它不会消除时间。 –
这是因为在方言1(自2000年以来BTW已被弃用)中,'DATE'是'TIMESTAMP'。你的技巧是可行的,因为使用'VARCHAR(11)'将删除时间信息。 –