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

时间:2015-03-27 09:10:03

标签: db2

我在db2中使用yyyy/mm/dd格式将日期保存为varchar我需要在查询中将其转换为日期datetype如何实现此目的?

我试过

  

从ASAODLIB.SSLR204中选择DATE(CRDTR2),其中CRDTR2 BETWEEN   ' 2015/03/01 39#; AND' 2015/03/31';

查询并得到以下错误

  

日期时间值的字符串表示的语法是   不正确.. SQLCODE = -180,SQLSTATE = 22007,DRIVER = 3.68.61

有人可以帮助我。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

...因为它没有识别出那种格式。我首先通过REPLACE将其转换为*ISO

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 Server,但问题实际上是由于表示。那,大多数版本的DB2都允许你在时间戳中指定小数秒......)。