Oracle提取一周的日期名称

wnrlj8wa  于 2023-05-06  发布在  Oracle
关注(0)|答案(2)|浏览(171)

我在一个名为Table_1的表中有这样的数据:

my_current_date_value
20-MAR-22
20-MAR-31
20-APR-29

我想要的是:

Wednesday
Friday
Saturday

如何在Oracle中实现这一点?我试着玩TO_CHAR函数,但它不喜欢我目前的'YY-MMM-DD',我无法将其转换为'YYYY-MM-DD'

以下是我尝试使用的:

SELECT TO_CHAR(DATE my_current_date_value,'DAY')FROM DUAL;
这似乎只在我硬编码单个日期时有效,但对于一列日期则无效。有什么建议吗?这就是我说我的代码不工作的意思。

7uhlpewt

7uhlpewt1#

你不需要确定数据类型是什么,所以这里有一些变体来覆盖DATE/TIMESAMP(查询1)或VARCHAR 2(查询2):

SELECT mydate, TO_CHAR(mydate, 'fmDay') AS day 
FROM mytable;
MYDATE白天
22年3月20日星期天
2031年3月20日星期四
29年4月20日星期五
-- Now, assume the data is held as string (but I do hope this isn't true
SELECT mydate, TO_CHAR(TO_DATE(mydate, 'DD-MON-RR'), 'fmDay') AS day 
FROM mytable2;
MYDATE白天
22年3月20日星期天
2031年3月20日星期四
29年4月20日星期五

fiddle
btw:TO_CHAR(...,'Day')返回一周中的某一天,并在末尾添加空格以匹配可能的最长日期名称。例如,代替“SUNDAY”,您将得到“SUNDAY”。使用“fm”(即使用fmDay)删除这些尾随空格。

imzjd6km

imzjd6km2#

-- column 3 to reproduce your column date format
-- column 4 to retrieve desired Day format from it
-- so TO_CHAR(YOUR_DATE) should work, check your schema

SELECT TO_CHAR(SYSDATE, 'Day'), TO_CHAR(SYSDATE, 'DD-MON'), TO_CHAR
    (SYSDATE, 'DD-MON-YYYY'), TO_CHAR(TO_DATE(TO_CHAR
    (SYSDATE, 'DD-MON-YYYY')), 'Day') 
  from dual;

看看这是否对你有用!(我会把一个更好的图片/表输出后)x1c 0d1x

相关问题