ThaiSQL.COM Wiki and Forum
หน้าแรก
กระดานถามตอบ
ประวัติ
เขียนบทความ
บทความ
หมวด
Login/Logout
Your Profile
Create Account
Quick Search
»
Advanced Search »
Back
SS091102 - การแจกแจงข้อมูลแบบวันที่
Modified on 2009/11/09 14:02
by
ninefyi
Categorized as
SQL Server
สวัสดีครับ วันนี้ขอนำเสนอวิธีการ แยกข้อมูลวันที่ให้ออกมาเป็นวันๆนะครับ ยกตัวอย่างหากข้อมูลที่เก็บอยู่เป็น DateFrom และ DateTo ซึ่งก็หมายถึงว่าเก็บเป็นวันเริ่ม และสิ้นสุด แล้วเราอาจจะมีความจำเป็นในการแยกข้อมูลมาเป็นแบบวันๆ ตั้งแต่วันเริ่มไล่ไปเป็นวันๆเรื่อยๆจนถึงวันที่สิ้นสุดนะครับ ในความสามารถใน SQL Server 2005 และ SQL Server 2008 นั้นสามารถทำได้โดยใช้ CTE หรือ Common Table Expression นะครับ เรามาลองดูกันนะครับ สร้าง User Defined Function ก่อนนะครับ {{{{<nowiki>CREATE FUNCTION [dbo].ufnDATEEXTRACT ( @StartDate DATETIME , @EndDate DATETIME ) RETURNS @DateTable TABLE ( [date] DATETIME ) AS BEGIN SELECT @StartDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @StartDate)) ; SELECT @EndDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @EndDate)) ; WITH CTE_DatesTable AS ( SELECT @StartDate AS [date] UNION ALL SELECT DATEADD(dd, 1, [date]) FROM CTE_DatesTable WHERE DATEADD(dd, 1, [date]) <= @EndDate ) INSERT INTO @DateTable ( [date] ) SELECT [date] FROM CTE_DatesTable OPTION ( MAXRECURSION 0 ) RETURN END</nowiki>}}}} หลังจากนั้นวิธีทดสอบนะครับ {{{{<nowiki>SELECT * FROM dbo.ufnDATEEXTRACT(GETDATE(), DATEADD(MONTH, 1, GETDATE()))</nowiki>}}}} ที่มา [http://www.kodyaz.com/articles/sql-server-dates-table-using-tsql-cte-calendar-table.aspx|URL]
Meta Keywords:
Meta Description:
Change Comment: