如何检索日期从每月第一天或 16 号开始的所有行?
日期如下:
2012-03-01 11:25:00
2014-05-10 13:26:00
2013-04-16 12:24:00
2017-11-03 14:21:00
2011-10-01 09:23:00
我需要获取从每月第一天或 16 号开始的所有日期
2012-03-01 11:25:00
2013-04-16 12:24:00
2011-10-01 09:23:00
此时,我使用类似的方法,但我很确定这不是最优雅的方式:
SELECT * FROM table WHERE date like '%-01 %' OR date like '%-16 %'
最佳答案
永远不要像字符串一样对待日期,使用日期函数来获取您需要的内容...
经验法则:
- 如果是日期,请使用日期函数来处理它。
- 如果您需要对其进行数学计算;最好是数字而不是字符...
- 如果你永远不会对它进行数学运算,并且它不是日期......将其存储为字符。
- 据我所知,唯一的异常(exception)是自动增量;你不应该做数学,而应该是数字(从技术上讲,引擎正在做数学,所以我猜这符合规则 2)
这里有 3 个从约会中了解一天的示例。
WHERE extract(day from date) in (1,16)
WHERE Day(date) in (1,16)
WHERE dayofmonth(date) in (1,16)
来自文档: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_extract
或
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_day
关于mysql - 如何检索日期从一个月的第一天开始的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43725680/