2014-02-20 103 views
19

如何获取今天的日期并将其转换为01/mm /yyyy格式,并在3个月前的交付月份从表中获取数据?表格已包含递送月份01/mm/yyyy用于获取最近3个月数据的sql查询

+0

'WHERE Con​​vert(DATE,TableColumn)> = GETDATE() - 90' ??你到目前为止尝试过什么吗? –

+2

为什么要将日期存储为字符串?你应该修好桌子。 –

+0

从交货日期的表格中创建月份,格式为01/mm/yyyy。这是为了以后对于php的易用性。因此,为了获得最近3个月的特定类型的交货,我正在考虑取得今天的日期并将其转换为01/mm/yyyy格式,并在表格中的交货月份将其指定为至少3个月,包括当前月份数据。 – user88866050

回答

53
SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(MONTH, -3, GETDATE()) 

Mureinik的建议的方法将返回相同的结果,但做这种方式查询可以从任何索引上Date_Column受益。

或者你可以检查过去90天。

SELECT * 
FROM TABLE_NAME 
WHERE Date_Column >= DATEADD(DAY, -90, GETDATE()) 
+6

其实你可以用'GETDATE() - 90'来代替'DATEADD(DAY,-90,GETDATE())' –

+4

@huMptyduMpty但是3个月不一定是90天,因为月可能有30天或31天(甚至28天或29,如果我们考虑二月) – AlexB

6

我会用datediff,而不是计较格式转换:

SELECT * 
FROM mytable 
WHERE DATEDIFF(MONTH, my_date_column, GETDATE()) <= 3 
7

最新的MySQL版本不支持DATEADD改用语法

DATE_ADD(date,INTERVAL expr type) 

要获得最后3个月的数据使用,

DATE_ADD(NOW(),INTERVAL -90 DAY) 
DATE_ADD(NOW(), INTERVAL -3 MONTH) 
+1

不是MySQL的问题... – Migol

+2

'DATE_ADD'完美工作! 'DATEADD'似乎不存在于MySQL中。 – Erik

0

最近3个月

SELECT DATEADD(dd,DATEDIFF(dd,0,DATEADD(mm,-3,GETDATE())),0) 

今天

SELECT DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0) 
相关问题