【问题标题】:date comparison oracle sql日期比较oracle sql
【发布时间】:2018-08-31 10:23:03
【问题描述】:

如何将加入日期与当前日期进行比较,如果小于或等于 45 天,则选择这些详细信息并在 oracle sql 中显示,如果加入日期和当前日期格式不同,例如(加入日期 @987654322 @ 和当前日期01-MAR-17)?

【问题讨论】:

  • 日期没有任何格式。它仅以您可以根据您的语言环境特定 NLS 设置理解的格式显示。见stackoverflow.com/a/36059638/3989608
  • 分享您的表架构/结构以及您尝试了什么

标签: sql oracle date


【解决方案1】:

应该是这样的(如果您需要 45 天或更早之前加入的人的行):

select *
from your_table
where joining_date <= trunc(sysdate) - 45;

【讨论】:

    【解决方案2】:

    我很幸运得到了输出,查询是

    select COL_NAME from TABLE_NAME where (to_date(SYSDATE)- to_date(COL_NAME,'dd/mm/yyyy'))&lt;=60

    【讨论】:

    • 从不to_date()应用于已经是日期的值。 to_date() 需要 varchar,因此日期值将首先转换为 varchar,然后传递给 to_date() 函数,该函数将其转换回最初的 date
    • stackoverflow.com/a/29559609/3989608正如@a_horse_with_no_name 所说,永远不要在日期上使用TO_DATE,它会隐式将其转换为字符串,然后使用特定于区域设置的NLS格式返回日期。
    • 此查询的第二个问题是它不会使用COL_NAME 上的索引(如果有的话) - 因为你想要WHERE col_name &gt;= TRUNC(SYSDATE-60)
    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-31
    • 2015-12-29
    • 1970-01-01
    相关资源
    最近更新 更多