1. ホーム
  2. sql-server

[解決済み] MS SQLは日付を比較しますか?

2023-01-01 19:17:29

質問

2つの日付(datetime)があります。

日付1 = 2010-12-31 15:13:48.593

日付2 = 2010-12-31 00:00:00.000

同じ日ですが、時間が違います。date1 と date2 を <= で比較すると、date1 の時間のため、うまくいきません。つまり、date1 <= date2 は間違っていますが、真であるべきです。年、月、日だけを見て、同じになるように比較することは可能ですか?SQL Server 2008です。

ありがとうございます :)

どのように解決するのですか?

SELECT CASE WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) ...

必要なことをするはずです。

テストケース

WITH dates(date1, date2, date3, date4)
     AS (SELECT CAST('20101231 15:13:48.593' AS DATETIME),
                CAST('20101231 00:00:00.000' AS DATETIME),
                CAST('20101231 15:13:48.593' AS DATETIME),
                CAST('20101231 00:00:00.000' AS DATETIME))
SELECT CASE
         WHEN CAST(date1 AS DATE) <= CAST(date2 AS DATE) THEN 'Y'
         ELSE 'N'
       END AS COMPARISON_WITH_CAST,
       CASE
         WHEN date3 <= date4 THEN 'Y'
         ELSE 'N'
       END AS COMPARISON_WITHOUT_CAST
FROM   dates 

戻り値

COMPARISON_WITH_CAST   |  COMPARISON_WITHOUT_CAST
Y                         N