データベース システムにを渡すと、ETL
「dim_time」という時間ディメンションがあり、テーブルは次のような多くのフィールドで構成されます。
- id
- year
- month
- day
- hour
- week
- day_of_week
私はそのテーブルから id の範囲を取得しようとしており、2 つの日付の間でクエリを実行しています。多くのテストの後、最良のオプションはconcat
フィールドと質問<=
であると考えました>=
。これはクエリです。
SELECT `DimTime`.`id` FROM `dim_time` AS `DimTime`
WHERE ((CONCAT(`DimTime`.`year`, "-", `DimTime`.`month`, "-", `DimTime`.`day`, " 00:00:00") >= CONCAT(2013, "-", 10, "-", 9, " 00:00:00"))
AND (CONCAT(`DimTime`.`year`, "-", `DimTime`.`month`, "-", `DimTime`.`day`, " 00:00:00") <= CONCAT(2013, "-", 11, "-", 13, " 00:00:00")))
ORDER BY `DimTime`.`year` DESC, `DimTime`.`quarter` DESC, `DimTime`.`month` DESC, `DimTime`.`week` DESC, `DimTime`.`day` DESC, `DimTime`.`hour` DESC
このクエリは、10 月 9 日、および 11 月 1 日から 13 日までのすべての日 (クエリの制限) の行の ID を返します。
10 月の残りの日数が結果に含まれないのはなぜですか? 10 日から 31 日までの日数。
何かを見逃しているのか、それとも日付比較としてMySQL
扱うことができないのかはわかりません。concat