Oracle 如何从日期中获取星期日名称?

Oracle 如何从日期中获取星期日名称?,oracle,date,dayofweek,Oracle,Date,Dayofweek,鉴于1982年9月3日我们怎么能说现在是哪一周。在这种情况下,它将是Tue 是否可以在一个查询中获取 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-

鉴于1982年9月3日我们怎么能说现在是哪一周。在这种情况下,它将是
Tue

是否可以在一个查询中获取

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日期标准并避免日期格式歧义。)

要对oracle sql执行此操作,语法如下:

SUBSTR(col,INSTR(col,'-',1,2)+1)作为新字段


在这个例子中,我寻找第二个“-”,并将子字符串带到末尾,但我认为有必要加强@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

请注意,如果您使用的是美国日期格式,则上述代码示例中的“dd/mm/yyyy”是不典型的。在美国,典型的日期格式是“mm/dd/yyyy”。不清楚最初的日期示例是在3月还是9月。不典型@DWright您一定来自美国,从未参与过国际项目或听说过国际标准(ISO)@Pablet,我实际上在欧洲长大,了解日期格式的国际变化,也了解ISO标准。我这样评论的原因是,OP显然使用了美国日期格式,因为1982年3月9日是星期二,但1982年9月3日是星期五。OP说这是星期二,所以我们知道我们正在使用日期格式。但Zohaib使用的是'dd/mm/yyyy'格式字符串,因此,如果OP使用Zohaib的格式字符串,则会导致潜在问题,因为它不是美国格式。所以我只想提醒人们,特别是OP,说我疯了,但我会从dual添加并使用
select to_char(日期'1982-03-09','Day')Day。不知道为什么人们如此热衷于大写字母,因为我们现在有语法高亮笔,不使用固定宽度字体时大写字母会占用更多空间。