早上好,
我试图为Oracle寻找Weekday的替代方法,由于某些原因,我们的版本无法识别Weekday函数。它不断抛出错误,
WeekDay:无效的标识符。
我正在尝试在Where语句中使用它:
Where Weekday(OR_Log.Surgery_DAte) not in (1,7)
清除任何周六或周日的手术。这是将代码从Teradata更新到Oracle。
Oracle V.12C
任何帮助,将不胜感激。
您的Oracle版本无法识别“工作日”,因为这不是Oracle函数。
您可以使用该to_char()
功能获取日期,但取决于NLS设置,因此不作答复就更安全。日期名称也与NLS语言相关,但是至少可以在函数调用中覆盖它们:
where to_char(OR_Log.Surgery_Date, 'Dy', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Sat', 'Sun')
该'Dy'
格式元素的文档中描述的所有其他人,一起。请注意,'DY'
以大写形式为您提供日期缩写,'Day'
或者以大写或'DAY'
混合形式为您提供全天名称;但默认情况下会用空格填充(其他语言的缩写...);但是如果您希望使用全天名称以提高可读性,则可以添加修饰符:
where to_char(OR_Log.Surgery_Date, 'FMDay', 'NLS_DATE_LANGUAGE=ENGLISH') not in ('Saturday', 'Sunday')