[date]
列のタイプが の 2 つのテーブルがありますDATETIME2(0)
。
2 つのレコードを日付部分 (日 + 月 + 年) だけで比較し、時間部分 (時間 + 分 + 秒) を破棄する必要があります。
どうやってやるの?
[date]
列のタイプが の 2 つのテーブルがありますDATETIME2(0)
。
2 つのレコードを日付部分 (日 + 月 + 年) だけで比較し、時間部分 (時間 + 分 + 秒) を破棄する必要があります。
どうやってやるの?
CAST
SQL Server 2008の新しいデータ型に を使用してDATE
、日付部分だけを比較します。
IF CAST(DateField1 AS DATE) = CAST(DateField2 AS DATE)
マークの答えの小さな欠点は、両方の日付フィールドが型キャストされていることです。つまり、インデックスを活用できないということです。
したがって、日付フィールドのインデックスを利用できるクエリを作成する必要がある場合は、次の (かなり複雑な) アプローチが必要です。
(DF1 >= CAST(DF2 AS DATE)) AND (DF1 < DATEADD(dd, 1, CAST(DF2 AS DATE)))
PS: (古いバージョンの SQL Server で) 日付のみを抽出する別の方法は、日付が内部でどのように表現されるかというトリックを使用することです。
CAST(FLOOR(CAST(DF2 AS FLOAT)) AS DATETIME)
MM/DD/YYYYのような 2 つの日付をMM /DD/YYYYと比較し ます。Field の最初の列の型は dateTime でなければならないことに注意してください。例: columnName: payment_date dataType : DateTime。
その後、簡単に比較できます。クエリは次のとおりです。
select * from demo_date where date >= '3/1/2015' and date <= '3/31/2015'.
それは非常に簡単です......それはそれをテストしました.....