SQL Server 2008には、date
があります。 時間が添付されていないデータ型。したがって、変換してからDateAdd
を実行するだけで、時間部分を非常に簡単に削除できます。 。
SELECT DateAdd(month, -1, Convert(date, GetDate()));
これにより、date
が返されます データ・タイプ。強制的にdatetime
にする ここでも、Convert
をもう1つ追加するだけです。 :
SELECT Convert(datetime, DateAdd(month, -1, Convert(date, GetDate())));
datetime
への明示的な変換は必要ない場合があります 、しかし。
注:「今日から1か月前」は、さまざまな方法で定義できます。 SQL Serverで機能する方法は、前月から現在の月と同じ日番号に最も近い日を返すことです。これは、3月31日に実行したときのこの式の結果が2月28日になることを意味します。したがって、1つを実行した場合など、これの影響について明確に考えないと、特定のシナリオで期待される結果が得られない場合があります。月の計算を複数回行い、別の月に同じ日を取得することを期待します(3月->2月->1月など)。
SQLFiddleでライブデモを見る
デモでは、各式の値と結果のデータ型が表示されます。