Oracle替代工作日

SAS*_*SMC 0 sql oracle date-formatting

早上好,

我试图为Oracle寻找Weekday的替代方法,由于某些原因,我们的版本无法识别Weekday函数。它不断抛出错误,

WeekDay:无效的标识符。

我正在尝试在Where语句中使用它:

Where
Weekday(OR_Log.Surgery_DAte) not in (1,7)
Run Code Online (Sandbox Code Playgroud)

清除任何周六或周日的手术。这是将代码从Teradata更新到Oracle。

Oracle V.12C

任何帮助,将不胜感激。

Ale*_*ole 5

您的Oracle版本无法识别“工作日”,因为这不是Oracle函数

您可以使用to_char()功能获取日期,但取决于NLS设置,因此不作答复就更安全。日期名称也与NLS语言相关,但是至少可以在函数调用中覆盖它们:

where to_char(OR_Log.Surgery_Date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Sat', 'Sun')
Run Code Online (Sandbox Code Playgroud)

'Dy'格式元素的文档中描述的所有其他人,一起。请注意,'DY'以大写形式为您提供日期缩写,'Day'或者以大写或'DAY'混合形式为您提供全天名称;但默认情况下会用空格填充(其他语言的缩写...);但是如果您希望使用全天名称以提高可读性,则可以添加修饰符:

where to_char(OR_Log.Surgery_Date, 'FMDay', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Saturday', 'Sunday')
Run Code Online (Sandbox Code Playgroud)