我正在尝试查询 DB2 数据库以查找两个日期列(START_DATE
和END_DATE
(之间的记录(日期以 YYYYMMDD 格式存储在数据库中(。这就是我所拥有的,但它不起作用。谁能帮我解决这个问题?
SELECT *
FROM TBDeals
WHERE TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-01'
AND TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-20';
谢谢
将日期存储为字符串,这不是一个好的做法。另一方面,您使用的格式确实允许正确的排序,那么为什么不简单地根据字符串检查现有值呢?
where startdate >= '20200301' and end_date <= '20200420'
这种方法的优点是它可以利用字符串日期列上的索引。
如果值是数字,则:
where startdate >= 20200301 and end_date <= 20200420
您的日期范围似乎向后,请尝试此版本:
SELECT *
FROM TBDeals
WHERE
TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-20' AND
TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-01';