別の日付を指定して、月の最初の日の日付を作成する最も簡単な方法

StackOverflow https://stackoverflow.com/questions/121581

  •  02-07-2019
  •  | 
  •  

質問

SQL Server で、別の日付時刻に基づいて月の最初を表す日付時刻を作成する最も簡単でクリーンな方法は何ですか?たとえば、2005 年 3 月 3 日 14:23 という変数または列があり、2005 年 3 月 1 日 00:00 を取得したいとします (varchar としてではなく日時として)。

役に立ちましたか?

解決

Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0)

これを列に対して実行するには、GetDate() を列名に置き換えます。

このコードのトリックは DateDiff を使用することです。DateDiff は整数を返します。2 番目のパラメーター (0) は、SQL Server の 0 の日付 (1900 年 1 月 1 日) を表します。したがって、datediff は 1900 年 1 月 1 日からの整数の月数を計算し、その月数を 1900 年 1 月 1 日に加算します。最終的な効果は、日時値の日 (および時刻) 部分を削除することです。

他のヒント

SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0)

このようなものはうまくいきます...

UPDATE YOUR_TABLE
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn)

ただ使用してください

DATEADD(DAY, 1-DAY(@date), @date)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top