当月第一天的日期和前5天的日期。的MySQL [英] Date of the first day of the current month and the date of the 5 days earlier. MySQL
本文介绍了当月第一天的日期和前5天的日期。的MySQL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个与此查询类似的查询:
I need a query similar to this one:
SELECT *
FROM myTable
WHERE
DATE_FORMAT(date,'%Y-%m-%d') BETWEEN <1> AND <2>
其中< 1>
为日期该月第一天的日期,< 2>
是5天前的日期。例如,如果当前日期为2013-03-14,则< 1>
应该为2013-03-01和< 2>
2013-03-09。
Where <1>
is the date of the first day of the month and <2>
is the date of the day 5 days earlier. For example, if the current date is 2013-03-14, <1>
should be 2013-03-01 and <2>
2013-03-09.
我该怎么做?
推荐答案
查询:
SQLFIDDLEExample
SELECT
DATE_FORMAT(NOW(),'%Y-%m-%d') d1,
DATE_FORMAT(NOW(),'%Y-%m-01') d2,
DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 DAY),'%Y-%m-%d') d3
结果:
| D1 | D2 | D3 |
----------------------------------------
| 2013-03-14 | 2013-03-01 | 2013-03-09 |
所以:
SELECT *
FROM myTable
WHERE DATE_FORMAT(date,'%Y-%m-%d')
BETWEEN DATE_FORMAT(NOW(),'%Y-%m-01')
AND DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL -5 DAY),'%Y-%m-%d')
此查询可能不会使用INDEX,因为格式为功能为 DATE_FORMAT(date,'%Y-%m-%d')
This query probabbly don't gonna use INDEX because of formatting column with function DATE_FORMAT(date,'%Y-%m-%d')
但是,如果您的列 date
数据类型为 Datetime
何时可以使查询到以下位置:
But if your column date
datatype is Datetime
When you can make your query to:
SELECT *
FROM myTable
WHERE date >= DATE_FORMAT(CURDATE(),'%Y-%m-01')
AND date <= DATE_ADD(CURDATE(), INTERVAL -5 DAY)
这篇关于当月第一天的日期和前5天的日期。的MySQL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文