我有一张名为schedules
的桌子。它有三列day
,month
,year
,即日程/月/年。这里没有时间戳。我选择了这种格式,以便我可以检索10月或2014年的所有时间表。
但是,是否可以检索给定范围的时间表,例如从2014年9月10日到2014年10月9日?问题是,如果我使用
WHERE 'day' > 10 AND 'day' < 9 ...
不会返回任何内容,因为即使10月(10月)大于9月(9),月份的日期也会错过这个!
是否有办法或者我是否还需要包含带时间戳的第四个date
列?
答案 0 :(得分:2)
您可以使用括号和or
子句:
WHERE ('month' = '9' AND 'day' > 10) OR ('month' = '10' AND 'day' < 9)
但是,使用日期时间字段会更好,因为您仍然可以轻松获得月/日/年:
WHERE MONTH(field) = 10
WHERE DAY(field) = 3
WHERE YEAR(field) = 2014
然后你也可以做
WHERE field >= '2014-09-10' AND field <= '2014-10-09'
有关mysql中所有日期/时间函数的文档,请参阅http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html。