Oracle SQL:select 用于工作日并将列转换为日期

Oracle SQL: select for weekday and converting column to date

我有一个包含列(数据类型为 VARCHAR20)的数据库

Created
2020-01-01T20:30:20.207Z
2020-01-04T23:10:00.242Z

最后我希望能够过滤某个工作日。为此,我的第一步是申请

SELECT *
FROM mydatabase
WHERE TO_DATE(CREATED, 'YYYY-MM-DD"T"HH24:MI:SS.FFF"Z"') BETWEEN TO_DATE ('2020-01-02T10:39:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FFF"Z"') AND TO_DATE('2020-01-03T15:39:00.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FFF"Z"');

查看对应于我的 ISO8601 格式的转换是否有效。不幸的是,我收到错误“ORA-01821 - “日期格式无法识别””。如果有人能告诉我如何完成根据某个工作日进行过滤的任务,以及我是否在正确的轨道上,那就太好了。

祝一切顺利。

我会这样做:

where to_char(to_date(substr(created, 1, 10), 'YYYY-MM-DD'), 'Dy') = 'Mon'

出于国际化目的,您可以使用第三个参数坚持这是英文:

select to_char(to_date(substr(created, 1, 10), 'YYYY-MM-DD'), 'Dy') = 'Mon'

或者使用数据库的本地语言。

这会将前十个字符转换为日期,然后将其转换为工作日。