在Firebird SQL中的IIF或CASE语句中使用EXTRACT()

时间:2017-02-09 01:06:45

标签: case extract firebird

为什么以下语句不会在firebird SQL中起作用:

IIF((EXTRACT(WEEKDAY FROM TIMESHEETLINES.DATEWORKED)) = 0, 
    "SUNDAY", 
    TIMESHEETLINES.DATEWORKED)

目的是将日期放入"周结束"类别。因此,无论在日期工作日期输入什么日期,它都会在报告中显示为在周结束时。

我可以使用嵌套的if或case语句,但由于case语句不起作用,我试图将其分解为IFF语句。但是我们都不喜欢使用我自己工作的EXTRACT函数,但是在IFF或CASE语句中使用时却没有。

1 个答案:

答案 0 :(得分:1)

IIF(Cond, Result1, Result2) is a shortcut for “CASE WHEN Cond THEN Result1 ELSE Result2 END”. You can also compare IIF to the ternary “? :” operator in C-like languages.

示例:

select iif( sex = 'M', 'Sir', 'Madam' ) from Customers

使用' SUNDAY' 代替" SUNDAY"。双引号表示方言3的字段名称或表格(感谢Mark Rotteveel)。

请参阅SQL Dialects

所以,试试:

select IIF((EXTRACT(WEEKDAY FROM TIMESHEETLINES.DATEWORKED))=0,'SUNDAY',
TIMESHEETLINES.DATEWORKED) from TIMESHEETLINES