我试图查询db2数据库以查找两个日期列之间的记录, START_DATE 以及 END_DATE (日期以yyyymmdd格式存储在db中)。这是我有的,但不起作用。有人能帮我修一下吗?
START_DATE
END_DATE
SELECT * FROM TBDeals WHERE TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-01' AND TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-20';
谢谢您
gj3fmq9x1#
您将日期存储为字符串,这不是一个好的做法。另一方面,您使用的格式允许正确的排序,所以为什么不简单地对照字符串检查现有的值呢?
where startdate >= '20200301' and end_date <= '20200420'
这种方法的优点是可以利用字符串日期列上的索引。如果值是数字,则:
where startdate >= 20200301 and end_date <= 20200420
vaj7vani2#
似乎您的日期范围是向后的,请尝试以下版本:
SELECT * FROM TBDeals WHERE TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-20' AND TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-01';
2条答案
按热度按时间gj3fmq9x1#
您将日期存储为字符串,这不是一个好的做法。另一方面,您使用的格式允许正确的排序,所以为什么不简单地对照字符串检查现有的值呢?
这种方法的优点是可以利用字符串日期列上的索引。
如果值是数字,则:
vaj7vani2#
似乎您的日期范围是向后的,请尝试以下版本: