Kesinlikle, yöntem a
en az kaynak yoğun olan yöntemdir :
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Daha az CPU yoğun aynı toplam süre için bir milyon satır bazıları tarafından çok fazla zaman ellerinde: SQL Server'da tarih + saat tarih almak için en verimli yolu?
Başka yerlerde de benzer sonuçlarla benzer bir test gördüm.
Ben DATEADD / DATEDIFF tercih çünkü:
- varchar dil / tarih biçimi konularına tabidir
Örnek: CASE ifadem neden belirleyici değil?
- şamandıra dahili depolamaya dayanır
- "0" tabanını değiştirerek ayın ilk günü, yarın vb. çalışma süresini uzatır.
Düzenle, Eki 2011
SQL Server 2008+ için, date
yani CAST yapabilirsiniz CAST(getdate() AS date)
. Veya sadece date
veri türünü kullanın, böylece kaldırılacak zaman yok.
Edit, Oca 2012
Bunun ne kadar esnek olduğuna dair çalışılmış bir örnek: sql sunucusunda yuvarlanan zaman veya tarih rakamına göre hesaplanması gerekiyor
Edit, Mayıs 2012
Bunu WHERE deyimlerinde ve benzerlerinde düşünmeden kullanmayın: bir sütuna işlev veya CAST eklemek dizin kullanımını geçersiz kılar. Buradaki 2 numaraya bakın: http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
Şimdi, bunun daha sonra bugüne kadar CAST'ı yöneten daha sonraki SQL Server optimiser sürümlerine bir örneği var, ancak genellikle kötü bir fikir olacak ...
, Nis 2018, datetime2 için
DECLARE @datetime2value datetime2 = '02180912 11:45' --this is deliberately within datetime2, year 0218
DECLARE @datetime2epoch datetime2 = '19000101'
select DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch)