当月第一天的日期和前5天的日期。的MySQL [英] Date of the first day of the current month and the date of the 5 days earlier. MySQL

查看:201
本文介绍了当月第一天的日期和前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

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆