Jasper - Oracle - 如何按日期过滤
Jasper - Oracle - How to filter by date
我正在尝试按日期过滤查询。
我的查询中有这一行:
AND (the_date like CONCAT (TO_DATE($P{THE_DATE}, 'YYYY-MM-DD'),'%'))
但是,我似乎无法有效地将参数日期与数据库日期进行比较。
数据库日期是 DATE 类型。参数是字符串类型。
我也试过:
AND (TO_CHAR(the_date) like CONCAT ($P{THE_DATE,'%')
我的数据类型有误吗?我试过其他人但无济于事。我的查询有误吗?
我正在使用 iReport...我正在寻找某种调试选项以查看实际执行的内容,但没有找到。
当你想比较DATE时,你需要使用TO_DATE将字面量转换成DATE。
无需使用 LIKE 运算符。您可以在 DATE 列上使用 TRUNC,但是,这会抑制任何常规 index 用法。最好使用 DATE RANGE 条件 .
请记住,DATE 具有日期和时间元素。
例如,
WHERE
the_date >= TO_DATE('14-MAY-2015','DD-MON-YYYY')
AND
the_date < TO_DATE('14-MAY-2015','DD-MON-YYYY') +1;
您可以使用 INPUT 参数或定义为字符串的本地 变量 而不是上面示例中的文字。
WHERE
the_date >= TO_DATE(in_date,'DD-MON-YYYY')
AND
the_date < TO_DATE(in_date,'DD-MON-YYYY') +1;
数据库中存储的格式类似于 12/MAY/15。
尽管我确信我在字符串类型的输入参数中尝试过此操作,但这被证明是神奇的答案 :) 我的输入是“12/MAY/15”并且有效。
我正在尝试按日期过滤查询。
我的查询中有这一行:
AND (the_date like CONCAT (TO_DATE($P{THE_DATE}, 'YYYY-MM-DD'),'%'))
但是,我似乎无法有效地将参数日期与数据库日期进行比较。
数据库日期是 DATE 类型。参数是字符串类型。
我也试过:
AND (TO_CHAR(the_date) like CONCAT ($P{THE_DATE,'%')
我的数据类型有误吗?我试过其他人但无济于事。我的查询有误吗?
我正在使用 iReport...我正在寻找某种调试选项以查看实际执行的内容,但没有找到。
当你想比较DATE时,你需要使用TO_DATE将字面量转换成DATE。
无需使用 LIKE 运算符。您可以在 DATE 列上使用 TRUNC,但是,这会抑制任何常规 index 用法。最好使用 DATE RANGE 条件 .
请记住,DATE 具有日期和时间元素。
例如,
WHERE
the_date >= TO_DATE('14-MAY-2015','DD-MON-YYYY')
AND
the_date < TO_DATE('14-MAY-2015','DD-MON-YYYY') +1;
您可以使用 INPUT 参数或定义为字符串的本地 变量 而不是上面示例中的文字。
WHERE
the_date >= TO_DATE(in_date,'DD-MON-YYYY')
AND
the_date < TO_DATE(in_date,'DD-MON-YYYY') +1;
数据库中存储的格式类似于 12/MAY/15。 尽管我确信我在字符串类型的输入参数中尝试过此操作,但这被证明是神奇的答案 :) 我的输入是“12/MAY/15”并且有效。