2

yyyy-MM-dd会社の古い Crystal レポートを更新していると、ある範囲内の日付と別の範囲内の日付を検索していることを偶然発見しましたyyyyMMdd。また、結果がわずかに異なることもわかったので、これをさらに調査し始めました。

データベース(MS SQL Serverで実行中)をチェックしたところ、検索対象のフィールドに日付が文字列yyyyMMdd形式で保存されました。

yyyy-MM-ddCrystal Reports によって作成された SQL クエリ の形式を使用するレポートには、

WHERE ("Remiss_ank"."Skapad_datum">='2013-07-01' 
  AND "Remiss_ank"."Skapad_datum"<='2013-07-31')

一方、この形式を使用するレポートには、yyyyMMdd次を含む SQL クエリがあります。

WHERE ("Remiss_ank"."Skapad_datum">='20130701' 
  AND "Remiss_ank"."Skapad_datum"<='20130731')

データベース内のすべての日付はyyyyMMdd形式で保存されているため、前者がまったく結果を返さないかどうかは理解できますが、実際には後者のサブセットが返されます。実際、最初のクエリは、20130702 から 20130731 の範囲の日付を持つすべてのレコードを返します。

この結果が表示される理由と、文字列2013-07-02が文字列間隔の一部であると見なされる理由2013070120130731誰かが説明できますか2013-07-01?

4

1 に答える 1