75

鉴于03/09/1982我们怎么能说它是哪一天。在这种情况下,它将是Tue

是否有可能进入单个查询?

4

3 回答 3

144
SQL> SELECT TO_CHAR(date '1982-03-09', 'DAY') day FROM dual;

DAY
---------
TUESDAY

SQL> SELECT TO_CHAR(date '1982-03-09', 'DY') day FROM dual;

DAY
---
TUE

SQL> SELECT TO_CHAR(date '1982-03-09', 'Dy') day FROM dual;

DAY
---
Tue

(请注意,查询使用 ANSI 日期文字,它遵循 ISO-8601 日期标准并避免日期格式歧义。)

于 2011-11-04T03:44:59.850 回答
4

晚会晚了近十年,但我认为有必要加强@Zohaib 的答案,因为它的结果取决于客户的语言。如果您向用户显示工作日名称,那绝对没问题,但如果您的代码依赖于它,我宁愿像这样控制语言:

SQL> SELECT TO_CHAR(date '1982-03-09', 'DAY', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---------
TUESDAY

SQL> SELECT TO_CHAR(date '1982-03-09', 'DY', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---
TUE

SQL> SELECT TO_CHAR(date '1982-03-09', 'Dy', 'NLS_DATE_LANGUAGE = ENGLISH') day FROM dual;

DAY
---
Tue
于 2021-04-05T09:17:55.437 回答
-2

要为 oracle sql 执行此操作,语法为:

,SUBSTR(col,INSTR(col,'-',1,2)+1) AS new_field

对于此示例,我查找第二个“-”并将子字符串带到末尾

于 2020-02-04T18:47:39.510 回答