[解決済み] Postgresql の日付範囲間のクエリ
2022-04-24 01:23:11
質問
Postgresqlのデータベースに照会して、ある日付が特定の月と年に含まれる結果を返そうとしています。言い換えれば、ある月と年のすべての値が欲しいのです。
今までのところ、このような方法しかありませんでした。
SELECT user_id
FROM user_logs
WHERE login_date BETWEEN '2014-02-01' AND '2014-02-28'
この場合の問題は、テーブルを照会する前に、最初の日付と最後の日付を計算しなければならないことです。もっと簡単な方法はないでしょうか?
ありがとうございます。
解決方法は?
日付(と時間)の場合、多くのことが単純になります。
>= start AND < end
.
例えば
SELECT
user_id
FROM
user_logs
WHERE
login_date >= '2014-02-01'
AND login_date < '2014-03-01'
この場合にも、必要な月の開始日を計算する必要がありますが、これはいくつもの方法で簡単にできるはずです。
終了日も単純で、ちょうど1ヶ月を追加するだけです。 28日、30日、31日など、ごちゃごちゃ考える必要はありません。
この構造には、インデックスを使い続けられるというメリットもある。
などの形を提案する人が多いかもしれませんが、彼らは しない はインデックスを使用します。
WHERE
DATEPART('year', login_date) = 2014
AND DATEPART('month', login_date) = 2
これは、テーブルの1行ごとに条件を計算し(スキャン)、一致する行の範囲を見つけるためにインデックスを使用しない(範囲シーク)ことを意味します。
関連
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] PostgreSQLの場合。PostgreSQLのテーブルを表示する
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] PostgreSQLの "DESCRIBE TABLE"
-
[解決済み] PostgreSQL コマンドラインユーティリティ: psql を終了する方法
-
[解決済み] SQL SELECT WHERE フィールドに単語が含まれる場合
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
-
[解決済み】Javascriptで日付に先頭のゼロを追加する。
最新
-
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] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
解決策:ユーザー root で localhost:3306 にある MySQL に接続できませんでした。
-
SQL-初心者のためのベスト入門SQLクエリ I
-
[解決済み] MySQLの「スキーマの作成」と「データベースの作成」 - 違いはあるのか?
-
[解決済み] SQL Server で複数行のテキストを 1 つのテキスト文字列に連結する方法
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] SQLiteデータベースで、一度に複数行を挿入することは可能ですか?
-
[解決済み] SQL Server 2008を使用してIDENTITY_INSERTをオン/オフする方法は?