0

我有以下格式的日期列:
20120714042548334
20120714042548334
20120714042549375

尝试查询特定范围的表时,我收到一条错误消息,提示“日期时间值的字符串表示的语法不正确。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')

任何帮助或帮助将不胜感激。

4

2 回答 2

1

您是否尝试过将您的范围日期设置为 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'
于 2013-09-27T23:23:56.147 回答
0

正则表达式:

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

如果您完全可以使用正则表达式, /([\d]{4})([\d]{2})([\d]{2})[\d]{9}/ 将返回:2012 07 04 为 20120714042548334

查询建议:

另外,如果该列是日期,则大意是

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

例如,应该在 7 月 14 日到 8 月 23 日之间删除所有内容。

在你的 9/4 到 9/10,它会是:

SELECT Date FROM AUDIT WHERE Date>=20120904000000000 AND Date<20120911000000000

希望有帮助。

于 2013-09-27T20:35:14.687 回答