web-dev-qa-db-ja.com

月の最初の日を表す日付を取得する方法は?

テーブルに日付を挿入できるようにするスクリプトの機能が必要です。

フォーマットの日付を挿入するために必要なSQL

01/08/2010 00:00:00

ここで、日付は現在の月の最初の日です。月の値を指定できる順序を変更するには何が必要ですか?ありがとう

33
DaveDev

これを行うための最良かつ最も簡単な方法は、以下を使用することです:

SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)

GETDATE()を必要な日付に置き換えてください。

77
Icemanind

受け入れられた答えは機能し、より高速かもしれませんが、SQL 2012以降にはより簡単に理解できる方法があります。

SELECT cast(format(GETDATE(), 'yyyy-MM-01') as Date)
8
jmoreno
select cast(cast(datepart(year,getdate()) as char(4)) 
+ '/' 
+ cast(datepart(month,getdate()) as char(2))
+ '/01' as datetime)
3
Joe Stefanelli

これを行う非常に簡単な方法を次に示します(SQL 2012以降を使用)

datefromparts(year(getdate()),month(getdate()),1)

を使用して月の最終日を簡単に取得することもできます

eomonth(getdate())
2
iliketocode

SELECT DATEADD(day、1-DATEpart(day、GETDATE())、GETDATE())

1
Beth
SELECT DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0)

これは完全に機能しました。実際にCaseステートメントを追加しました。投稿をありがとう:

SELECT Case(DATEADD(m, DATEDIFF(m, 0, GETDATE()), 0) as Date)
0
Todd181

私は通常、文字列をMM/DD/YY HH:mm:ssに変換すると思います、あなたは08/01/2010 00:00:00を使用する必要があります

申し訳ありませんが、文字列の順序を変更できるかどうかを確認するために質問を誤解しました。

これはあなたが望むものかもしれません:

declare @test as date

select @test = CONVERT(date, '01/08/2010 00:00:00', 103)
select convert(varchar(15), @test, 106)
0
BlackICE

これから変更 リンク 。これは文字列として返されますが、日時データ型を返すように必要に応じて変更できます。

SELECT CONVERT(VARCHAR(25),DATEADD(dd,-(DAY(GetDate())-1),GetDate()),101) 
0
AllenG
SELECT  CAST(FLOOR(CAST(DATEADD(d, 1 - DAY(GETDATE()), GETDATE()) AS FLOAT)) AS DATETIME)
0
Quassnoi