Dalam SQL Server 2005 bagaimana cara mendapatkan tanggal saat ini tanpa bagian waktu? Saya telah menggunakan GETDATE()
tetapi ingin memiliki waktu 00: 00: 00.0
Dalam SQL Server 2005 bagaimana cara mendapatkan tanggal saat ini tanpa bagian waktu? Saya telah menggunakan GETDATE()
tetapi ingin memiliki waktu 00: 00: 00.0
Jawaban:
Yang tercepat jika Anda harus mengulangi set rekaman dan tidak memiliki tanggal dalam SQL Server 2008
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
Dua jawaban berbeda dan sangat baik di StackOverflow memberikan jawaban ini: Satu , Dua
Konversi varchar adalah salah satu cara terburuk untuk melakukannya. Tentu saja, untuk satu nilai mungkin tidak masalah, tetapi itu kebiasaan yang baik untuk masuk.
Cara ini juga deterministik, katakanlah jika Anda ingin mengindeks kolom yang dihitung. Bahkan orang-orang yang menulis buku tentang SQL Server terjebak dengan konversi datetime
Teknik ini juga dapat diperpanjang.
DATEADD(day, DATEDIFF(day, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), -1)
DATEADD(month, DATEDIFF(month, 0, GETDATE()), 31)
Sunting:
Seperti yang saya sebutkan tentang determinisme, metode varchar tidak aman kecuali jika Anda menggunakan style 112.
Jawaban lain di sini menunjukkan bahwa Anda tidak akan pernah menerapkan ini pada kolom. Ini benar, tetapi Anda mungkin ingin memilih 100k baris atau menambahkan kolom yang dihitung atau GROUP BY dateonly saja. Maka Anda harus menggunakan metode ini.
Jawaban lainnya juga menyebutkan gaya 110. Ini bukan bahasa atau SET DATEFORMAT aman dan gagal dengan pengaturan bahasa "Inggris". Lihat panduan utama untuk tipe data datetime oleh Tibor Karaszi.