【问题标题】:SQL Querying a Database Using The Current Date and Date associated with an AttributeSQL 使用当前日期和与属性关联的日期查询数据库
【发布时间】:2022-01-11 06:42:08
【问题描述】:

我正在尝试从头开始查询我创建的数据库。对于我数据库中的每个职位发布,我将发布日期存储在“日期”数据类型中,其格式为“DD-MON-YY”。我想知道在发布日期后一个月后哪些职位没有被填写。

到目前为止,我可以查询我的数据库并找到尚未填写的作业,因为我的表中的特定属性为空。但是我不知道如何添加已经至少一个月的条件。

SELECT JOBID
FROM JOB
WHERE HIRED IS NULL;

作为参考,我在 Oracle 中创建了这个数据库,并且正在使用 SQL 开发人员。

【问题讨论】:

  • "格式为"DD-MON-YY"" 不,不是; DATE 是二进制数据类型,没有格式。您正在使用的用户界面可以选择以该格式显示 DATE,但数据库不会以该格式(或任何格式)存储它,因为它使用 7世纪、世纪年、月、日、小时、分钟和秒的字节(并且总是有这些组件,即使 UI 没有显示其中的一些)。
  • 请在edit 问题中包含minimal reproducible example 和:CREATE TABLE 表的声明; INSERT 语句用于一些演示问题的示例数据;以及您对该样本数据的预期输出。您没有告诉我们哪一列存储日期,也没有告诉我们您是否要将其与当前日期或另一列进行比较。
  • 您如何定义特定日期的“一个月后”?这在月末是模棱两可的。例如:日期是 4 月 30 日。“一个月后”是什么时候 - 5 月 30 日还是 5 月 31 日? Oracle 数据库中不同的此类功能在这个主题上甚至彼此不一致。所以,请澄清。或者“任何合理的答案”对你有用吗?
  • 任何合理的答案都有效,我正在寻找更一般的答案。我不明白如何添加一个条件,即我发布的日期加上一个月。我想换个说法,我将如何制定这个条件,我是否会在存储的日期上加一个月并将其与今天的日期进行比较?我想我不明白其中的逻辑。

标签: sql oracle date


【解决方案1】:

我想换个说法,我将如何制定这个条件,我是否会在存储的日期上加一个月并将其与今天的日期进行比较?

将您的日期列与添加了-1 月份的当前日期进行比较:

SELECT JOBID
FROM   JOB
WHERE  HIRED IS NULL
AND    date_column <= ADD_MONTHS(SYSDATE, -1);

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 2018-01-07
    • 2020-04-02
    • 2016-04-05
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多