db2日期比较

nwsw7zdq  于 2021-08-13  发布在  Java
关注(0)|答案(2)|浏览(507)

我试图查询db2数据库以查找两个日期列之间的记录, START_DATE 以及 END_DATE (日期以yyyymmdd格式存储在db中)。这是我有的,但不起作用。有人能帮我修一下吗?

SELECT *
FROM TBDeals
WHERE TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-01' 
  AND TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-20';

谢谢您

gj3fmq9x

gj3fmq9x1#

您将日期存储为字符串,这不是一个好的做法。另一方面,您使用的格式允许正确的排序,所以为什么不简单地对照字符串检查现有的值呢?

where startdate >= '20200301' and end_date <= '20200420'

这种方法的优点是可以利用字符串日期列上的索引。
如果值是数字,则:

where startdate >= 20200301 and end_date <= 20200420
vaj7vani

vaj7vani2#

似乎您的日期范围是向后的,请尝试以下版本:

SELECT *
FROM TBDeals 
WHERE
    TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-20' AND
    TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-01';

相关问题