db2日期时间转换为日期问题

db2日期时间转换为日期问题,db2,Db2,我有以下格式的日期列: 2012071404548334 2012071404548334 2012071404549375 试图查询某个范围的表时,我得到一个错误,该错误表示“datetime值的字符串表示语法不正确。SQLSTATE=22007”,立即或在显示几千条记录后出错。 我使用的查询是 select * from AUDIT where date(substr(serv_start_date_time,1,4)||'-' ||substr(serv_start_date_time,5

我有以下格式的日期列:
2012071404548334
2012071404548334
2012071404549375

试图查询某个范围的表时,我得到一个错误,该错误表示“datetime值的字符串表示语法不正确。SQLSTATE=22007”,立即或在显示几千条记录后出错。 我使用的查询是

select * from AUDIT
where date(substr(serv_start_date_time,1,4)||'-' ||substr(serv_start_date_time,5,2) ||'-'||
substr(serv_start_date_time,7,2)) between date('9/4/2012') and date('9/10/2012')
任何帮助都将不胜感激

Regex:

如果您能提供更多关于如何访问它的详细信息,这将有所帮助。 我通过ruby访问SQL-情况不同,但知道您可以使用哪些工具会有所帮助

如果你能使用正则表达式, /([\d]{4})([\d]{2})([\d]{2})[\d]{9}/将返回: 2012 07 04 对于 2012071404548334

查询建议:

另外,如果列是Date, 大意是

SELECT Date FROM AUDIT WHERE Date>=20120714000000000 AND Date<20120824000000000

从审计中选择日期,其中日期>=201207140000000和日期您是否尝试将范围日期设置为ISO格式:

select * from AUDIT
where date( substr(serv_start_date_time,1,4) ||'-'
          ||substr(serv_start_date_time,5,2) ||'-'
          ||substr(serv_start_date_time,7,2)
          ) between date('2012-09-04') and date('2012-09-10')
或者更快,通过避免类型转换,坚持字符比较,因为这似乎是数据列的开始

select * from AUDIT
where serv_start_date_time between '20120904' and '20120910'

SQL,甲骨文的蟾蜍。您知道在db2中将日期格式化为mm/dd/yyyy.Regex的方法在所有db2平台上都不可用,在服务器上进行记录选择要比将所有记录提取到Ruby(或其他语言)中以便以这种方式执行选择有效得多,很明显,获取所有记录都是荒谬的。我还认为,如果所选记录的数量不超过几十条,则可以在任何地方快速格式化所选记录。非常好的回答。顺便说一句,它在抱怨,因为你在
date()
函数中使用了mm/dd/yyyy格式。为了国际化和将来的维护安全,请始终使用
*ISO
。另外,在处理范围时,请避免在
之间使用
,特别是对于“可变精度类型”(本质上是整数计数以外的任何类型)-列出了日期/时间/时间戳类型(特别是SQL Server,但它适用于所有RDBMS)的原因。
select * from AUDIT
where serv_start_date_time between '20120904' and '20120910'