【问题标题】:capturing data from current date to a specific date捕获从当前日期到特定日期的数据
【发布时间】:2016-10-04 02:07:29
【问题描述】:

我是一个相当新的 sql,我正在使用 birt 报告设计器,我认为它使用的是 oracle sql。 好的,我知道我的问题很简单,请放过我,我已经进行了一些搜索,但找不到答案,这将是我最后的手段(在此处发布)。

所以这是我的问题, 我有一个包含日期的表格,下面的示例表格,

Student ID    Nationality    Enrollment date    
1               american            4-15-2015
2               american            1-23-2016
3               Indian              8-19-2016
4               Iranian             7-3-2015
5               Chinese             11-11-2014
6               Australian          12-1-2014

由于我已使用以下查询设置此表:

Select 
        a.student_ID
        a.nationality
        b.enrollment_date

    from    Infotable a
    Inner join datetable b
            On a.student_ID = b.student_ID

由于此 sql 与报告相关联,我想知道我可以在 [where] 子句中使用什么查询来向我展示 从特定日期(11-11-2014)到当前日期的数据。

总结一下,我想获取从特定日期到今天的所有日期。

或者让它更难一点

如果我安排在每周一生成报告,则为下周一报告 (6 月 6 日)所有注册日期将从 2014 年 11 月 11 日-2016 年 6 月 6 日。之后的星期一将包含从 2014 年 11 月 11 日到 2014 年 6 月 13 日的所有注册日期……以此类推。

我可以做 to_date 的 [between] 子句,但我不知道在当前日期查询中放什么。

b.enrollment_date BETWEEN
  TO_DATE('11-11-2014','MM-dd-yyyy') AND
  TO_DATE('7-23-2015','MM-dd-yyyy') << how can this be changed to current date?

我尝试使用 sysdate 但没有用

b.enrollment_date BETWEEN
      TO_DATE('11-11-2014','MM-dd-yyyy') AND
      sysdate()

当前日期也不起作用:(

b.enrollment_date BETWEEN
      TO_DATE('11-11-2014','MM-dd-yyyy') AND
      current_date

顺便说一句,我正在使用 oracle,所以我认为 getdate()) 可能不起作用?

感谢您理解我的愚蠢问题

【问题讨论】:

  • 在 Oracle 中,您将使用 sysdate。 “但这没有用”是什么意思?你收到错误了吗?记录太多?太少了?还有什么?
  • 表中还能有未来的记录吗?如果没有,那么您根本不必指定上限:where b.enrollment_date &gt;= date'2014-11-11'。
  • 我在使用 b.enrollment_date >= date'2014-11-11' 时出现错误 OdaDataException: 无法获取结果集元数据 也许我必须设置日期格式?
  • @MT0:不,它没有。
  • @user6221610: date'2014-11-11' 是 ANSI 日期文字,Oracle 可以理解,无需任何设置。

标签: sql oracle


【解决方案1】:

SYSDATE 不需要尾括号:

SELECT  a.student_ID
        a.nationality
        b.enrollment_date
FROM    Infotable a
        INNER JOIN datetable b
        ON ( a.student_ID = b.student_ID )
WHERE   b.enrollment_date BETWEEN DATE '2014-11-11' AND SYSDATE;

【讨论】:

  • 据我所知,SYSDATE是一个函数。括号是可选的,因为SYSDATE 没有参数。文档还说“这个 function 返回日期和时间”,所以我可能是对的。 docs.oracle.com/cd/B19306_01/server.102/b14200/functions172.htm
  • @ThorstenKettner SELECT SYSDATE() FROM DUAL 抛出 ORA-00923: FROM keyword not found where expected。
  • 你是对的。我很抱歉。我对此感到困惑。当调用不带参数的函数时,例如 SYSDATE(是的,它是一个函数 :-)括号在 PL/SQL 中是可选的,并且不能在 SQL 中使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-18
  • 2023-02-08
相关资源
最近更新 更多