【发布时间】:2011-12-21 17:21:37
【问题描述】:
鉴于03/09/1982,我们怎么能说它是哪一天。在这种情况下,它将是Tue。
是否有可能进入单个查询?
【问题讨论】:
鉴于03/09/1982,我们怎么能说它是哪一天。在这种情况下,它将是Tue。
是否有可能进入单个查询?
【问题讨论】:
晚了将近十年,但我认为有必要加强@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
【讨论】:
要为 oracle sql 执行此操作,语法为:
,SUBSTR(col,INSTR(col,'-',1,2)+1) AS new_field
对于这个例子,我寻找第二个'-'并将子字符串带到末尾
【讨论】:
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 日期标准并避免日期格式歧义。)
【讨论】:
select to_char(date '1982-03-09', 'Day') day from dual;。不知道为什么人们如此热衷于大写,因为我们现在有语法荧光笔,而且大写字母在不使用固定宽度字体时会占用更多空间。