sql - Oracle SQL:选择工作日并将列转换为日期
问题描述
我有一个带有列的数据库(数据类型为 VARCHAR20)
已创建 |
---|
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'
或者使用数据库的本地语言。
这会将前十个字符转换为日期,然后将其转换为工作日。
推荐阅读
- git - git使用WSL在VS Code中打开一个带有空缓冲区的文件
- python - 使用数字 Python 中的 Apriori 算法识别关联规则
- linux - 如何阻止我的 CAN 配置在重启时被擦除?
- javascript - MongoDB 查询嵌套模式
- python - 使用烧瓶返回服务器端处理的 URL
- python - 如何在python中对multinndex列进行操作
- c++ - 如何打印具有四列的二维数组
- python - Python:如何使用项目中的开始/结束时间戳对齐两个列表
- python - Python:如何在 rx.subject 订阅 on_next 中调用异步函数
- python - 如何通过索引使 Python 类属性可访问?