【发布时间】: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 >= date'2014-11-11'。 -
我在使用 b.enrollment_date >= date'2014-11-11' 时出现错误 OdaDataException: 无法获取结果集元数据 也许我必须设置日期格式?
-
@MT0:不,它没有。
-
@user6221610:
date'2014-11-11'是 ANSI 日期文字,Oracle 可以理解,无需任何设置。