2009-09-17 20 views
21

Ben SQL (SQL Server) geçerli tarih içinde nasıl biliyorum ama günün başlangıcında ile:sql - Günün başlangıcı, ay vb

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

SQL'de (almak gerek) bu tarihin başındaki geçerli tarih. Örneğin : Örneğin: 2009-09-17 17:00:00 Ben ancak bu ay başında ile geçerli tarih almak için ihtiyaç

ve (Ben tam biçimi hakkında umurumda değil) : 2009-09-01 00: 00: 00.000 (Tam formatı umursamıyorum)

Yardımcı olabilir misiniz? Şimdiden teşekkürler

cevap

40

Sadece gün kodunun geçerli başlangıç ​​adapte deneyin!

Tek istediğiniz ayın başlangıcı, saat başı. Onun sadece aynı ...

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

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

THANKS !!! bana çok yardımcı oldun. –

2

bu

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

ilk: teşekkürler. İkincisi: şimdi açıkça zaman koydu (ilk sorguda 17, ikinci sorgunuzda 01). Bu saati koymak istemiyorum şu anki saate ihtiyacım var. şimdiki ay. –

+0

Geçerli saat olan saatini alabileceğiniz DATEPART (hh, GETDATE()) değerini değiştirin ve 01 ay başlangıcı için yanlış anladınız mı? –

+0

erkek –

1

Ya deneyebileceğiniz bu

günü için

: ay boyunca select CONVERT(datetime, convert(varchar(8), getdate(), 112))

: select CONVERT(datetime, convert(varchar(6), getdate(), 112)+ '01') yıl için

: select CONVERT(datetime, convert(varchar(4), getdate(), 112)+ '0101')

4

bu deneyin:

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

sadece "CAST (SYSDATETIME() AS DATE)" benim için çalışıyor – kaybee99

0

En kısa olan: CAST(CURRENT_TIMESTAMP AS DATE)