SQL Server 2008 Express日历表

时间:2012-05-20 13:16:26

标签: sql calendar

我有下表

event_ID      Int,
Start_Date    Date,
End_Date      Date,

我想创建一个包含以下列的永久日历表

calender_ID,
Event_ID,
Event_Date,

我希望Event_Date列出Start_dateEnd_Date之间的所有日期

我在Visual Studio中使用SQL Server Express 2008

感谢任何帮助

澡堂

1 个答案:

答案 0 :(得分:0)

首先,创建一个像SO Thread中提到的“ExplodeDates”这样的函数:https://stackoverflow.com/questions/1378593/get-a-list-of-dates-between-two-dates-using-a-function/1378788#1378788

接下来,在您计划保持事件和日历表同步的存储过程/触发器中,您基本上只需执行以下操作:

DELETE FROM CalenderTable WHERE Event_ID=@EventID

INSERT INTO CalenderTable (Event_ID, Event_Date)
SELECT Event.Event_ID, Dates.TheDate
FROM Event
CROSS APPLY ExplodeDates(Event.Start_Date, Event.End_Date) Dates
WHERE Event.Event_ID=@EventID

我在这台机器上没有SQL,所以我没有机会测试这个。它可能需要一些调整,但这至少应该让你走上一条可行的道路......