2015-11-10 59 views
1

我有以下SQL語句的工作。它發現何時房間可用。我現在唯一的問題是我需要將p.DayShort轉換爲日期值。 DayShort將返回,S,M,Tu,W,Th,F,Sa。我有一個名爲week_beginning變量,這是一個週日的日期,所以我們假設的2015年11月8日的值,我想數據即可返回從2015年11月8日的日期的每一行,因此,如果DayShort爲W ,我希望它返回11/11/2015(基本上+ 3到week_beginning變量)。任何人都告訴我如何做到這一點?SQL輸出變量值

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" 
+0

'S,M,塗,W,釷,F,S'是那些真正的價值,原因有2個'S' – JRD

+0

大有趕超,週日以S表示,週六表示爲薩。是的,這是我的數據庫中的值存儲。 – JK36

+1

你的RDBM是什麼? –

回答

0

這個怎麼樣?

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 Server中是如何存在的 - 其他類型的SQL可能不同。

+0

想通了。 FileMaker不支持日期添加功能,但感謝你的情況,當你的結構指出我在正確的方向:) – JK36