将字符串日期(yyyy/mm/dd)转换为 db2 中的日期格式

convert string date(yyyy/mm/dd) to date format in db2

我在 db2 中以 yyyy/mm/dd 格式将日期保存为 varchar 我需要在查询中将其转换为日期类型如何实现?

我试过了

select DATE(CRDTR2) from ASAODLIB.SSLR204 where CRDTR2 BETWEEN '2015/03/01' AND '2015/03/31';

查询得到以下错误

The syntax of the string representation of a datetime value is incorrect.. SQLCODE=-180, SQLSTATE=22007, DRIVER=3.68.61

谁能帮帮我。

如果你的DB2版本足够新,使用to_date:select DATE(TO_DATE(CRDTR2, 'YYYY/MM/DD')) from ...

...因为它无法识别该格式。我先把它变成 *ISO,通过 REPLACE:

SELECT DATE(REPLACE(CRDTR2, '/', '-'))
FROM ASAODLIB.SSLR204 
WHERE CRDTR2 BETWEEN '2015/03/01' AND '2015/03/31'

顺便说一句,这里还有一些其他的东西。

  1. 您应该将日期存储为实际的日期类型,这不会成为问题。
  2. You shouldn't use BETWEEN,优先于独占上限(< - 博客谈论 SQL 服务器,但问题实际上是由于表示。那,和大多数DB2 版本允许您在时间戳中指定小数秒...)。