【问题标题】:MySQL date separated as day/month/yearMySQL 日期分隔为日/月/年
【发布时间】:2014-10-29 00:08:49
【问题描述】:

我有一张桌子,名为schedules。它有三列daymonthyear,即计划所针对的日/月/年。这里没有时间戳。我选择这种格式是为了检索 10 月或 2014 年的所有时间表。

但是,是否可以检索给定范围的时间表,例如从 2014 年 9 月 10 日到 2014 年 10 月 9 日?问题是,如果我使用

WHERE 'day' > 10 AND 'day' < 9 ...

不会返回任何内容,因为即使 10 月 (10) 月大于 9 月 (9) 月,该月的天数也会错过!

有没有办法或者我还需要包含带有时间戳的第四个date 列?

【问题讨论】:

  • 为什么在单独的列中?,您可以在时间戳/日期时间字段中提取日/月/年,并且可以轻松比较日期范围。
  • 这应该都在一个日期字段中,然后使用适当的日期函数,而不是试图将一些可怕的混乱混在一起。改用您的数据库设计,这样的查询是微不足道的。
  • 是的。合理的逻辑,但不幸的结论。日期和日期时间数据类型的存在是有原因的!

标签: php mysql date


【解决方案1】:

您可以使用括号和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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2013-10-26
    相关资源
    最近更新 更多