「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL の date_format との日付比較で予期しない結果が生じるのはなぜですか?

MySQL の date_format との日付比較で予期しない結果が生じるのはなぜですか?

2024 年 11 月 12 日に公開
ブラウズ:867

Why Is MySQL Date Comparison with date_format Yielding Unexpected Results?

MySQL の日付と date_format を比較

複数の日付比較方法を試行したにもかかわらず、ユーザーは予期しない結果に遭遇しました。 「%d-%m-%Y」の形式で日付を比較しようとしましたが、結果セットに誤ったレコードが含まれていました。

この問題は、日付ではなく文字列を比較することに起因します。 date_format 関数は日付を文字列に変換するため、比較が辞書編集順の影響を受けやすくなります。たとえば、「28-10-2012」はアルファベット順で「02-11-2012」よりも大きいため、時系列的に早いにもかかわらず結果セットに含まれます。

これを解決するには、比較を実行する必要があります。文字列の代わりに日付を使用します。日付関数を使用すると、DATETIME フィールドまたは DATE フィールドから日付コンポーネントを抽出できます。抽出された日付を比較することで、時系列順が保証されます。

例:

select date_format(date(starttime),'%d-%m-%Y') from data
where date(starttime) >= date '2012-11-02';

このクエリでは、date(starttime) によって starttime フィールドから日付が抽出され、指定された日付 (YYYY-MM) と比較されます。 -DD形式。 date_format 関数は、結果の書式設定にのみ使用されます。

starttime が DATETIME フィールドの場合は、次の使用を検討してください:

select date_format(date(starttime),'%d-%m-%Y') from data
where starttime >= '2012-11-02 00:00:00';

このクエリでは、DATETIME フィールドで直接比較が実行されるため、日付変換の繰り返しが回避されます。

ISO に注意してください。 -8601 標準では、日付形式として「YYYY-MM-DD」を使用することを推奨していますが、提供されるコードはユーザーの指定に従っています。 '%d-%m-%Y' 形式。

リリースステートメント この記事は次の場所に転載されています: 1729739525 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3