SQL 输出变量值

SQL Output variable value

我有以下有效的 SQL 语句。它发现房间何时可用。我现在唯一的问题是我需要将 p.DayShort 转换为日期值。 DayShort 将 return, S,M,Tu,W,Th,F,Sa。我有一个名为 week_beginning 的变量,它是星期日的日期,所以我们假设值为 11/8/2015,我希望每行数据 return 从 11/8 返回一个日期/2015,所以如果 DayShort 是 W,我希望它为 return 11/11/2015(基本上是 week_beginning 变量的 + 3)。谁能教我怎么做?

SELECT 
    p.DayShort, p.PeriodNumber, i.StartTime, i.EndTime 
FROM 
    PeriodList AS p
LEFT JOIN 
    PeriodInformation AS i ON p.pk_PeriodListID = i.fk_PeriodListID
LEFT JOIN 
    Lesson AS l ON l.fk_PeriodListID = i.fk_PeriodListID
LEFT JOIN 
    LessonRoom a ON l.pk_LessonID = a.fk_LessonID
LEFT JOIN 
    RoomList r ON a.fk_RoomID = r.pk_RoomID
WHERE 
    r.RoomCode = "SportsHall" 
    AND p.PeriodNumber NOT IN ('\"GAM/J\",\"ACT,J\",\"7E\",\"8E\",\"6E\",\"5E\"') 
    AND i.Rotation = "Sum"

这个怎么样?

SELECT DATEADD('d', p.Offset, week_beginning) as thedate, p.DayShort, p.PeriodNumber, i.StartTime, i.EndTime 
FROM (
   SELECT PeriodList.*, 
      CASE 
        WHEN DayShort = 'M' THEN 1
        WHEN DayShort = 'Tu' THEN 2
        WHEN DayShort = 'W' THEN 3
        WHEN DayShort = 'Th' THEN 4
        WHEN DayShort = 'F' THEN 5
        WHEN DayShort = 'Sa' THEN 6
        ELSE 0
      END as Offset
   FROM PeriodList
) AS p
-- no change for the rest of the query

注意这里的 DATEADD 是它在 SQL 服务器中的存在方式 -- SQL 的其他版本可能不同。