3

今日から過去 15 日 (つまり、今月または先月) までの範囲のデータを選択したいと考えています。これは TSQL でどのように行われますか?

Get last Friday's Dateに続いて、今日が T-SQL を使用して金曜日でない限りDATEDIFF、少なくとも使用する必要があるようです。

次のような日付文字列の作成を検討しています。

set @date='yyyy-mm-15'

しかしyyyymm月/年をさかのぼる必要がある場合に備えて、単純に現在の年/月にすることはできません。

4

2 に答える 2

4

これはあなたが望むものを与えるはずです

SELECT *
FROM YourTable
WHERE YourDate > CAST((
            CASE 
                WHEN DAY(getdate()) < 15
                    THEN (CAST(YEAR(GETDATE()) AS CHAR(4)) + CAST(MONTH(dateadd(month, - 1, getdate())) AS CHAR(2)) + '15')
                ELSE CAST(YEAR(GETDATE()) AS CHAR(4)) + CAST(MONTH(GETDATE()) AS CHAR(2)) + '15'
                END
            ) AS DATETIME)

結果が反転したため、編集 は WHEN DAY(getdate()) > 15をWHEN DAY(getdate()) < 15 に変更しました:)

于 2012-11-27T17:35:48.803 に答える
3

現在の日付を format でフォーマットしyyyy-mm-15、日付に戻して現在の日付と比較し、これが今日より遅い場合は 1 か月を引きます。

それは私が ANSI SQL で行うことです...しかし、明らかに、MS SQL Server は「間隔」を知りません。代わりにDateAddを使用できます。

DateAdd() - 指定された日付に間隔を追加することに基づいて、新しい datetime 値を返します。最初のパラメーターは、日付のどの部分で新しい値を返すかを指定します。年は yy(yyyy)、月は mm(m)、日は dd(d) などです。例: select dateadd(d,2,getdate( )) - 現在の日付に 2 日を追加し、新しい日付を返します。

于 2012-11-27T17:39:50.397 に答える