sql - oracle中如何比较日期和时间
问题描述
试图将两个日期与时间进行比较。但比较不起作用。
SELECT *
FROM attendance
WHERE TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') >=
TO_DATE ('01/09/2019 04:30:00 PM', 'DD/MM/YYYY HH:MI:SS AM')
AND TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') <=
TO_DATE ('30/09/2019 10:00:00 PM', 'DD/MM/YYYY HH:MI:SS AM')
AND userid = '3825'
AND SUBSTR (checktime, -2, 2) = 'PM'
ORDER BY TO_DATE (checktime, 'DD/MM/YYYY HH:MI:SS AM') ASC
我期待输出等于或大于下午 4:30 和小于或等于晚上 10:00。但是这个日期比较不起作用。这是 代码的输出。我希望我的结果包括提到的时间段之间的日期和时间。 注意:CHECKTIME 数据类型是 varchar2。
解决方案
TO_TIMESTAMP
您可以通过使用这种包含转换的格式来修复您的格式
SELECT *
FROM attendance
WHERE checktime
BETWEEN TO_TIMESTAMP('01/09/2019 16:30:00.000000','dd/mm/yyyy hh24:mi:ss.ff')
AND TO_TIMESTAMP('30/09/2019 22:30:00.000000','dd/mm/yyyy hh24:mi:ss.ff')
AND userid = 3825
ORDER BY checktime;
编辑:您最好添加一个带有时间戳数据类型的新列,并通过使用TO_TIMESTAMP
如下转换来更新新列的数据:
UPDATE attendance
SET checktime2 = TO_TIMESTAMP('3/09/2019 5:38:36 PM','dd/mm/yyyy hh:mi:ss AM')
WHERE id = 3825
AND checktime = '3/09/2019 5:38:36 PM'
推荐阅读
- ios - 将pdf文档保存到iOS Files App时如何指定文件名?
- python - 为什么我可以在 Python 中打开超过 1024 个套接字?
- javascript - 我加载了完整的 jQuery 库,但我只使用 Ajax 和选择器。更好的短代码?
- android - 如何使用 REST API 检索 woocommerce 产品数据?
- c# - 使用 Bing Ads API 获取广告系列数据
- javascript - 如何根据 id 减少对象数组
- python - ModuleNotFoundError:没有名为“pynput.keyboard”的模块;'pynput' 不是一个包
- php - 如何使用 laravel 将一个表的内容传输到另一个数据库表
- javascript - 使用 AEM 的 Javascript Use-API,我如何将函数传递到 HTL 端并使用参数调用它?
- java - 如何在我的 GUI 中显示一个圆圈数组