将字符串日期(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'
顺便说一句,这里还有一些其他的东西。
- 您应该将日期存储为实际的日期类型,这不会成为问题。
- You shouldn't use
BETWEEN
,优先于独占上限(<
- 博客谈论 SQL 服务器,但问题实际上是由于表示。那,和大多数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'
顺便说一句,这里还有一些其他的东西。
- 您应该将日期存储为实际的日期类型,这不会成为问题。
- You shouldn't use
BETWEEN
,优先于独占上限(<
- 博客谈论 SQL 服务器,但问题实际上是由于表示。那,和大多数DB2 版本允许您在时间戳中指定小数秒...)。