อย่างเคร่งครัดวิธีการa
เป็นทรัพยากรที่น้อยที่สุด:
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
พิสูจน์แล้วว่า CPU มีความเข้มข้นน้อยกว่าในช่วงเวลาเดียวกันทั้งหมดหนึ่งล้านแถวโดยบางอันมีเวลามากเกินไป: วิธีที่มีประสิทธิภาพมากที่สุดใน SQL Server เพื่อรับวันที่จากวันที่ + เวลา?
ฉันเห็นการทดสอบที่คล้ายกันที่อื่นด้วยผลลัพธ์ที่คล้ายกัน
ฉันชอบ DATEADD / DATEDIFF เพราะ:
แก้ไข, ตุลาคม 2011
สำหรับ SQL Server 2008+ คุณสามารถโยนไปคือdate
CAST(getdate() AS date)
หรือเพียงแค่ใช้date
ประเภทข้อมูลจึงไม่มีเวลาที่จะลบ
แก้ไข ม.ค. 2555
ตัวอย่างการทำงานของความยืดหยุ่นในการทำงานนี้: จำเป็นต้องคำนวณโดยการปัดเศษตัวเลขเวลาหรือวันที่ในเซิร์ฟเวอร์ sql
แก้ไขพฤษภาคม 2012
อย่าใช้สิ่งนี้ในส่วนคำสั่ง WHERE และสิ่งที่คล้ายกันโดยไม่ต้องคิด: การเพิ่มฟังก์ชั่นหรือ CAST ในคอลัมน์ทำให้การใช้ดัชนีไม่ถูกต้อง ดูหมายเลข 2 ได้ที่นี่: http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
ตอนนี้มีตัวอย่างของเวอร์ชันที่ใหม่กว่าของ SQL Server optimiser ที่จัดการ CAST ให้ถูกต้อง แต่โดยทั่วไปจะเป็นความคิดที่ไม่ดี ...
แก้ไข ก.ย. 2018 สำหรับ datetime2
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)