SQL Server All about DataTime data type

Function GETDATE() AND SYSTEMDATETIME()

  • GETDATE แสดงข้อมูลระดับ miliseconds
  • SYSDATETIME แสดงข้อมูลระดับ nanoseconds.

::select GETDATE() >> “2013-11-14 10:25:24.337”
::select SYSDATETIME() >> “2013-11-14 10:26:14.4002569”

การเปรียบเทียบ DataTime data column จะมีปัญหาให้ปวดหัวทุกที่จะทำอย่างไร ถึงจะสะดวกและ Performance ดีที่สุด ตัวอย่างทางเลือกที่ผมใช้งานครับ Convert ให้เป็น INT ไปเลยครับ ดังตัวอย่างนี้ครับ

cast(convert(char(8), d.DocCreateDate, 112) as int) between 20130601 and 20131031

GETDATE สามารบวก ลบ วันได้
::select GETDATE() + 10 >> เป็นการดึงวันที่ปัจจุบันแล้วบวกไปอีก 10 วัน
การประยุกษ์ เช่นต้องการหาข้อมูลที่วันเวลาปัจจุบันเป็นฐานการดึงข้อมูล เป็นการ Filter แบบ Dynamic Filter เช่น select Column between getdate() – 100 and getdate + 100