簡體   English   中英

如何在where子句中將日期轉換為mm / dd / yyyy

[英]How do i convert a date to mm/dd/yyyy in my where clause

我有成千上萬條今天添加但在一天中不同時間記錄的記錄,唯一能看到它們的方法是我是否按ORDER BY ADDdate DESC

但是,我需要在其中要使用WHERE子句和日期來更新particulr字段的地方聲明一條更新語句

問題是,由於它們都是在不同的時間輸入的,因此我如何才能將該字段進行CAST / CONVERT,以便我只能做類似的事情。

基本上每個添加的記錄都有datetime格式的AddDate字段,我希望將其轉換為mm / dd / yyyy格式。

Update SpecialField
SET SpecialField = NULL
Where ADDdate = '09/18/2017'

請幫忙。 謝謝。

如果您嘗試更新ADDdate為9/18/2017的所有記錄(無論時間如何),則可以執行以下操作:

UPDATE SpecialField, SpecialField2
SET SpecialField = NULL
WHERE ADDdate > '09/18/2017' AND ADDdate < '09/19/2017'

您應該始終使用標准日期格式。 我更喜歡YYYY-MM-DD,盡管SQL Server對YYYYMMDD略有偏好。

有兩種方法:

Update SpecialField
    set SpecialField = NULL
    where ADDdate >= '2017-09-18' and ADDdate < '2017-09-19';

>=表示第一個值, <表示第二個值。

要么

Update SpecialField
    set SpecialField = NULL
    where cast(ADDdate as date) = '2017-09-18';

在這兩種情況下,SQL Server都將使用索引,因此它們都是表達邏輯的合理方法。

如果您特別想要今天的日期,請使用getdate() ,例如:

Update SpecialField
    set SpecialField = NULL
    where cast(ADDdate as date) = cast(getdate() as date);

如果這是一個經常性的要求,您根本不必擔心鍵入日期。

where addDate >= cast(getdate() as date)
and addDate < dateadd(day, -1, cast(getdate() as date))

編輯

這與Gordon的答案有一些相似之處,因為它使用cast(getdate as date) 不同之處在於,他對趨向於降低性能的函數結果進行過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM