Sql DB2日期比较
我试图查询DB2数据库,以查找两个日期列之间的记录,Sql DB2日期比较,sql,date,db2,where-clause,Sql,Date,Db2,Where Clause,我试图查询DB2数据库,以查找两个日期列之间的记录,START\u date和END\u date(日期以YYYYMMDD格式存储在DB中)。这就是我所拥有的,但它不起作用。谁能帮我修一下吗 选择* 来自TBDeals 其中时间戳格式(开始日期,'yyyyymmdd')>='2020-03-01' 和TIMESTAMP_格式(END_DATE,'yyyyymmdd')如果您的日期范围向后,请尝试以下版本: SELECT * FROM TBDeals WHERE TIMESTAMP_FO
START\u date
和END\u date
(日期以YYYYMMDD格式存储在DB中)。这就是我所拥有的,但它不起作用。谁能帮我修一下吗
选择*
来自TBDeals
其中时间戳格式(开始日期,'yyyyymmdd')>='2020-03-01'
和TIMESTAMP_格式(END_DATE,'yyyyymmdd')如果您的日期范围向后,请尝试以下版本:
SELECT *
FROM TBDeals
WHERE
TIMESTAMP_FORMAT(START_DATE, 'YYYYMMDD') >= '2020-03-20' AND
TIMESTAMP_FORMAT(END_DATE, 'YYYYMMDD') <= '2020-04-01';
选择*
来自TBDeals
哪里
时间戳格式(开始日期,'YYYYMMDD')>='2020-03-20'和
TIMESTAMP_格式(END_DATE,'yyyyymmdd')您将日期存储为字符串,这不是一种好的做法。另一方面,您所使用的格式允许正确排序,那么为什么不简单地对照字符串检查现有值,就像这样呢
where startdate >= '20200301' and end_date <= '20200420'
其中startdate>='20200301'和end_date=20200301和end_date感谢您指出这一点。让我来解决这个问题。但问题仍然存在。实际上,我们将开始和结束日期存储为INT。这就是我遇到这个问题的原因。当我进行比较时,比较自然会失败。@sravan:。。。除非你把它们和数字比较。请看我编辑的答案。谢谢。没有转换本身,它正在工作。我第一次运行查询时把它弄糟了。
where startdate >= 20200301 and end_date <= 20200420