2017-09-18 9 views
-1

今日追加されたレコードは何千もありますが、時間帯は変わっています。 ADDdate DESC私はwhere句で日付をmm/dd/yyyyに変換するにはどうすればいいですか?

BY ORDERしかし、私は彼らがすべての方法を午前、異なる時間に入ったので、日付の句

問題は、あるWHERE使っparticulrフィールドを更新するUPDATE文を作成する必要があります私はCAST/CONVERTできるようにこのフィールドを私はちょうどのような何かを行うことができます....

基本的に追加されたすべてのレコードは、datetime形式のAddDateフィールドを持って、私は私が欲しいtをmm/dd/yyyy形式に変換します。

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

助けてください。ありがとう。

+0

[SQL Serverの文字列をMM/DD/YYYYに変換する]の可能な複製(https://stackoverflow.com/questions/11854775/sql-server-convert-date-to-string-mm-dd-yyyy) –

答えて

1

を。私はYYYY-MM-DDを好んでいますが、SQL ServerはYYYYMMDDをわずかに優先しています。

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

最初の値の>=と秒間<

は、ここでは、2つの方法です。どちらの場合も

または

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); 
2

あなたはADDdateが(時間に関わらず)2017年9月18日上にあるすべてのレコードを更新しようとしている場合は、このような何か行うことができます:あなたは、常に標準の日付形式を使用する必要があります

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

それは頻繁な要件だ場合、あなたは、単に日付を入力して心配する必要はありませんでした。

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

編集

それはcast(getdate as date)を使用することでこれはゴードンの答えにいくつかの類似点を持っています。違いは、パフォーマンスを低下させる傾向がある関数結果をフィルタリングすることです。

関連する問題