วันจันทร์ที่ 26 มกราคม พ.ศ. 2552

Getting Only the Date Part of a Date/Time Stamp in SQL Server

-----------------------------------------------------------------------------------------------
เป็นการแปลงวันที่และเวลา ตัวอย่างนี้จะเป็นการเปรียบเทียบให้เห็นสองแบบ
วิธีที่ 1 ใช้่การตัด วัน/เืดือน/ปี จาก GetDate() แล้วนำมาต่อเป็น ปี/เดือน/วัน แล้วเปลี่ยนกลับมาเป็นรูปแบบ Datetime เหมือนเดิม ซึ่งจะมีฟังค์ชันที่เกี่ยวข้องอยู่ 7 ตัว
วิธีที่ 2 ดูเรียบง่ายกว่าเพราะใช้เพียง 3 เมธอดและไม่มีการตัดข้อความแต่จะนำมาต่อให้อัตโนมัติ
ประสิทธิภาพเมื่อทดสอบกับข้อมูล 3,000 เรคอร์ด
วิธีที่ 1 : 115 ms
วิธีที่ 2: 16ms (มีประสิทธิภาพมากกว่าเยอะเลยคับพี่น้อง)
-----------------------------------------------------------------------------------------------
SELECT
-- Get the full date/time stamp as a base.
(
GETDATE()
) AS date_time_part,

-- Trying casting to a string then back to a date.
(
CAST(
(
STR( YEAR( GETDATE() ) ) + '/' +
STR( MONTH( GETDATE() ) ) + '/' +
STR( DAY( GETDATE() ) )
)
AS DATETIME
)
) AS date_only_part,

-- Try casting to float, rounding, and back to date.
(
CAST(
FLOOR( CAST( GETDATE() AS FLOAT ) )
AS DATETIME
)
) AS date_only_part2,

-- Try casting just to float to see what it looks like.
(
CAST( GETDATE() AS FLOAT )
) AS float_value,

-- Try flooring to see the intermediary step.
(
FLOOR( CAST( GETDATE() AS FLOAT ) )
) AS int_value

-----------------------------------------------------------------------------------------------
เครดิต :
http://www.bennadel.com/blog/122-Getting-Only-the-Date-Part-of-a-Date-Time-Stamp-in-SQL-Server.htm


-----------------------------------------------------------------------------------------------