如何更新包含日期/時間信息的字段以僅包含數據的日期部分?像下面這樣:如何更新日期時間字段以僅包含日期或時間部分
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)'將刪除時間信息。 –