2016-06-15 9 views
0

過去1年間のデータレコードを日付順に取得したい。しかし問題は、私が過去1年のその月の最初の日から始まるデータが必要であるということです。1ヶ月間のデータを含むデータベースから過去1年間のデータを取得

たとえば、15-June-2016の場合は、1-June-2015からデータを取得する必要があります。

私は

SELECT * 
FROM Table 
WHERE 
    date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) 
ORDER BY date 

でそれを実行しようとしました。しかし、それは働いていません。前年の月の最初を取得するには

+1

良い次に、適切なCREATE文とINSERT文、および必要な結果を指定します。 – Strawberry

答えて

1

、使用:

DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')) 

あなたのクエリは次のようになります。

SELECT * 
FROM TABLE 
WHERE 
    date > DATEADD(YEAR, -1, DATEADD(MONTH, DATEDIFF(MONTH, '19000101', GETDATE()), '19000101')) 
ORDER BY date 

参考:

1
select * 
from Table 
where date >= DATE_SUB(NOW(),INTERVAL 1 YEAR) order by date asc; 
+0

NOW()はSQL Serverでは有効ではありませんが、おそらくgetdate()について考えていますか? –

+0

@bender私もこのことがMySqlに必要です。しかし、あなたのソリューションは最初の日付から始まらず、正確に1年間与えています。できればさらに助けてください。 –

+0

@RichBennerがmysql 5.6.17で正常に動作していることを確認しました – Bender

0

この状態であなたを使用してください。

選択*表日付> DATEADD(年、-1、GETDATE())から - 日付別の日(GETDATE())+ 1オーダー

おかげ

2

この

SELECT * 
FROM Table 
WHERE 
    date >= DATEADD(YEAR,-1,DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)) 
ORDER BY date 
をお試しください
+0

1日目のレコードを含めるには '... date> = DATEADD(...')としてください。 –

+0

Exception - ネイティブ関数 ' DATEDIFF ' –

関連する問題