如何在MySQL的当月第一天和当前日期之间进行选择?

Nur*_*lan 51 mysql get date

我需要在当月的第一天和当天之间从MySQL数据库中选择数据.

select*from table_name 
where date between "1st day of current month" and "current day"
Run Code Online (Sandbox Code Playgroud)

有人可以提供此查询的工作示例吗?

ale*_*oot 134

select * from table_name 
where (date between  DATE_ADD(LAST_DAY(DATE_SUB(CURDATE(), interval 30 day), interval 1 day) AND CURDATE() )
Run Code Online (Sandbox Code Playgroud)

或更好 :

select * from table_name 
where (date between  DATE_FORMAT(NOW() ,'%Y-%m-01') AND NOW() )
Run Code Online (Sandbox Code Playgroud)

  • 可能更改`DATE_FORMAT(NOW(),'%​​Y-%m-01')和NOW()`到'date> = DATE_FORMAT(NOW(),'%​​Y-%m-01')之间的日期 (4认同)
  • 如果`date`是**datetime**那么我们必须使用DATE(date)来正确比较它. (2认同)

Shr*_*hri 28

我正在寻找类似的查询,我需要在查询中使用一个月的第一天.该last_day功能对我不起作用,但DAYOFMONTH派上用场.

因此,如果有人正在寻找相同的问题,以下代码将返回当月第一天的日期.

SELECT DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY);
Run Code Online (Sandbox Code Playgroud)

将日期列与该月的第一天进行比较:

select * from table_name where date between 
DATE_SUB(CURRENT_DATE, INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY) and CURRENT_DATE
Run Code Online (Sandbox Code Playgroud)

  • 使用 [`DAY` 而不是 `DAYOFMONTH`](http://stackoverflow.com/a/28966866/632951)。此外,请改用 `subdate` 的 2-arity 重载。它比 3-arity `date_sub` 快。 (2认同)

jue*_*n d 5

select * from table_name 
where `date` between curdate() - dayofmonth(curdate()) + 1
                 and curdate()
Run Code Online (Sandbox Code Playgroud)

SQLFiddle示例