sql - 使用 TO_DATE 函数后比较 Oracle 中的两个日期
问题描述
我有以下 Oracle 查询,它将今天的日期和表中的日期字段转换为相同的格式。然而,当试图比较两者时,它们并没有相等。
CAST(dstamp As Date), TO_DATE(CURRENT_DATE,'dd-MON-YY HH24.MI.SS','NLS_DATE_LANGUAGE = American')
演员表用于我表中的字段,这两个都返回。
但是,当添加以下 where 语句时,不会返回任何行。我无法弄清楚为什么这些不会被归类为平等?
WHERE CAST(dstamp As Date) = TO_DATE(CURRENT_DATE,'dd-MON-YY HH24.MI.SS','NLS_DATE_LANGUAGE = American');
任何帮助表示赞赏。
解决方案
如果您要检查是否dstamp
属于当天,我建议:
where dstamp >= trunc(sysdate) and dstamp < trunc(sysdate) + 1
虽然有点冗长,但这将比在被比较的列上应用日期函数更有效。在谓词中的列上使用函数会使查询成为非 SARGable,即它不能利用现有索引。
推荐阅读
- laravel - 如何正确地将 node_modules 中的库包含到您的项目中?
- spring - 从控制器显示错误或成功
- php - 如何修复ajax请求以调用php文件中的函数?
- python - Kafka python API 是否支持流处理?
- php - PHP Gmail API获取标签名称不是ID
- python-3.x - mss 模块已安装但程序无法导入它(使用单一版本的 python)?
- javascript - TypeError:无法读取未定义的属性“firstName”-在反应中使用“props”
- java - 如何在 Spring Security 中更新另一个用户的状态?
- python-3.x - 缺少 google-api-python-client 模块错误但已安装
- spss - 基于条件的用户产品串联