将一个传递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
不能将 aconcat
作为日期比较。