2014-02-20 102 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) 
相關問題