[解決済み] MySQL SELECT WHERE datetime matches day (and not necessarily time)
2022-05-10 16:01:53
質問
私はdatetimeカラムを含むテーブルを持っています。 私は時間に関係なく、指定された日のすべてのレコードを返したい。 言い換えれば、私のテーブルが次の4つのレコードだけを含んでいた場合、私が2012-12-25に制限する場合、2番目と3番目のレコードだけが返されるでしょう。
2012-12-24 00:00:00
2012-12-25 00:00:00
2012-12-25 06:00:00
2012-12-26 05:00:00
どのように解決するのですか?
絶対に
のようなセレクタを使用します。
DATE(datecolumns) = '2012-12-24'
- のようなセレクタはパフォーマンスキラーです。
-
を計算します。
DATE()
にマッチしない行を含むすべての行に対して - クエリにインデックスを使用することが不可能になります。
を使用する方がはるかに高速です。
SELECT * FROM tablename
WHERE columname BETWEEN '2012-12-25 00:00:00' AND '2012-12-25 23:59:59'
とすることで、計算せずにインデックスを使用できるようになります。
EDIT
Used_By_Already が指摘したように、2012 年の最初の回答から時間が経ち、終日として '23:59:59' を使用することがもはや安全ではない MySQL のバージョンが出現しています。更新されたバージョンでは、次のように表示されます。
SELECT * FROM tablename
WHERE columname >='2012-12-25 00:00:00'
AND columname <'2012-12-26 00:00:00'
回答の要点、つまり計算式のセレクタを避けることは、もちろんまだ有効です。
関連
-
MysqlからElasticsearchにデータを同期させる方法を説明します。
-
面接では選択式で聞かれましたが......。.for updateはテーブルをロックするか、行をロックするか?
-
[解決済み】マルチパート識別子をバインドできませんでした。
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
sql エラーを解決する オペランドには1つの列が含まれている必要があります。
-
Mysql がエラー 1241 を報告 オペランドは 1 つのカラムを含む必要があります。
-
[解決済み] 各グループの最後のレコードを取得する - MySQL
-
[解決済み] MySQLです。大きなVARCHARとTEXTの比較?
-
[解決済み] CSVファイルをMySQLのテーブルにインポートするには?
-
[解決済み】Joda-Timeの2つの日付の間の日数について
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLデータベース・インデックスの左端一致の原則
-
SpringBootのMySQLへの接続は、バックエンドのインターフェイスの操作方法を書き込むためのデータを取得するために
-
[解決済み] SQLエラー。ORA-01861:リテラルは、フォーマット文字列01861に一致しません。
-
[解決済み] ユーザー 'root'@'localhost' (パスワード: YES を使用) のアクセス拒否 - 特権がない?
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] INNER JOIN、LEFT JOIN、RIGHT JOIN、FULL JOINの違いは何ですか?[重複しています]。
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLで複数のカラムに一意制約を指定するには?
-
[解決済み] datetimeカラムから日付を選択する方法は?