2012-03-29 11 views
6

Ben SQL aşağıdaki parça: SQL datetime 00 okumak gerekiyor 00.000

2012-02-29 23:59:59.000 

kod kesin parçası ile gerek: Bu biçimi olarak yoluyla geliyor

select DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) 

tarih aynı, ancak zaman kısmı okumalıdır 00: 00: 00.000

Değiştirin * Burada net olmalıydı: Herhangi bir zamanda bir önceki ayın son gününe sahip olmam gerekiyor (00 ile zaman: 00: 00.000 biçiminde)

+0

[Floor SQL server bir tarih] olası yinelenen (http://stackoverflow.com/questions/85373/floor-a-date-in-sql-server) – Hogan

+0

'SEÇ CAST (ler) 'veya' SELAST CAST (Date (Tarih) olarak CAST (Tarih) Olarak) ''? – Seph

cevap

5
select dateadd(d,datediff(d,0,dateadd(s,-1,dateadd(m,datediff(m,0,getdate()),0))),0) 
3
SELECT DATEADD(MONTH, -1, DATEADD(DAY, 0, DATEDIFF(DAY, 0, GETDATE()))) 
+0

OP'nin sorgusu, önceki ayın son gününü/saniyesini verir. Sorgunuz bugün 1 saniye veriyor. – StuartLC

+2

Bu, o aydan bir ay çıkardığı için işe yaramaz. –

+0

SELECT DATEADD (AY, -1, DATEADD (GÜNDÜZ, 0, DATEDIFF (GÜNDÜZ, 0, GETDATE()))) –

2

saat bölümünü atmak için alternatif bir yöntem, bir şamandıra için döküm Floor fonksiyonu uygulamak ve bir tarih için geri dökülmesidir.

select Cast(Floor(Cast(DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE()),0)) as float)) as datetime) 
3

Bu, önceki ayın

select dateadd(s,-1,dateadd(month,datediff(month,0,GETDATE()),0)); 

son saniye verecek ve bu size önceki aya

select dateadd(day,-1,dateadd(month,datediff(month,0,GETDATE()),0)); 

fazla detay ait son günü verecek nasıl yapılır:

select dateadd(day,datediff(day,0,@datetime),0); 

veya İngilizce

select dateadd(day,datediff(day,0,GETDATE()),0); 

: Bu tarihe ve 0 arasındaki gün sayısını alın ve 0.

Bu DateDiff için herhangi bir parametre ile çalışır için o günleri ekleyin. Bu nedenle, zaman bilgisine ek olarak tüm gün bilgilerini "kaldırır".

0
SELECT DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) 

SQL Server 2012'de eomonth'u kullanabilirsiniz. TARİH İTİBARİYLE

SELECT EOMONTH(DATEADD(MONTH, -1, GETDATE())) 
+0

Yorumunuzda önerdiğiniz tarihi denedim. Doğru çıktı verdi mi? –

+2

@DarrenDavies - Şuna bir bakın ve cevaplarımız ile soruda verilen sorgu arasındaki tarih farklılıklarını fark edin. [Ay Sonu] (http://data.stackexchange.com/stackoverflow/query/65491/end-of-month) –

+0

Anlıyorum! Bunu işaretlediğiniz için teşekkürler :) –

İlgili konular