mysql - 如何检索日期从一个月的第一天开始的所有行

标签 mysql database

如何检索日期从每月第一天或 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 %' 

最佳答案

永远不要像字符串一样对待日期,使用日期函数来获取您需要的内容...

经验法则:

  1. 如果是日期,请使用日期函数来处理它。
  2. 如果您需要对其进行数学计算;最好是数字而不是字符...
  3. 如果你永远不会对它进行数学运算,并且它不是日期......将其存储为字符。
  4. 据我所知,唯一的异常(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/

相关文章:

database - Biztalk 暂停数据库中的消息

database - 如何手动实现JPA关系OneToMany

php - 如何在提交后重新填充动态生成的表单选择字段?

sql-server - 代码没有错误,但它没有恢复数据库

php - 如何使用代码点火器框架在查询 php 中将动态对象转换为数组

php - 执行查询时出现 sql 语法错误

database - 打印所有 18 岁以上的人的名字?

mysql - 无法安装 MySQL Server 5.6

php - 创建多行条目时出现错误 : Could not take attendence Unknown column '‘FName’' in 'field list'

mysql - 如何从mysql事务中获取存储的变量值