2009-09-17 7 views
21

は、私はSQL(SQL Serverの)現在の日付で取得する方法を知っているが、一日の始まりに:SQL - 時間の初め、月など

select dateadd(DAY, datediff(day, 0, getdate()),0) 
(result:2009-09-17 00:00:00.000) 

私はSQLに(取得するが必要)現在の日付をこの時間の始まりに置き換えます。たとえば :2009-09-17午後05時00分00秒(私は正確な形式を気にしない)

私は、現在の日付を取得するを必要としますが、今月の初めと: たとえば、 :2009-09-01 00:00:00.000(正確なフォーマットは気にしません)

私を助けてくれますか?事前のおかげで

答えて

40

ただ、日コードのあなたの現在の開始を適応させるお試しください!

あなたが望むのは、月の始まり、時間の始まりです。そのちょうど同じ...

select dateadd(month, datediff(month, 0, getdate()),0) 

select dateadd(hour, datediff(hour, 0, getdate()),0) 
+0

ありがとう!!!あなたは私をたくさん助けました。 –

2

これは

select DATEADD(hh,17,dateadd(DAY, datediff(day, 0, getdate()),0)) 

SELECT CAST('01 ' + CAST(DATENAME(MM, getdate()) AS VARCHAR(15)) + CAST(DATEPART(yyyy, GETDATE()) AS VARCHAR(5)) AS DATETIME) 
+0

最初に:ありがとう。秒:明示的に時刻を入れます(最初のクエリでは17、2番目のクエリでは01)。私は現在の時間が必要なこの数字を入れたくない。今月 –

+0

17を現在の時間を取得するDATEPART(hh、GETDATE())に変更してください 01は月の開始ですが、私は誤解しましたか? –

+0

あなたは男です –

1

それとも、一日のために、この

を試すことができます。月のselect CONVERT(datetime, convert(varchar(8), getdate(), 112))

を:select CONVERT(datetime, convert(varchar(6), getdate(), 112)+ '01')

年の場合:select CONVERT(datetime, convert(varchar(4), getdate(), 112)+ '0101')

4

はこれを試してみてください。

CAST(CAST(SYSDATETIME() AS DATE) AS DATETIME) 
+1

ちょうど 'CAST(SYSDATETIME()AS DATE)'が私のために働いています – kaybee99

0

最短のもの:CAST(CURRENT_TIMESTAMP AS DATE)