导出带有时间戳列 SQL 错误“-180”的 DB2 表过滤器
Posted
技术标签:
【中文标题】导出带有时间戳列 SQL 错误“-180”的 DB2 表过滤器【英文标题】:Export DB2 table filter with timestamp column SQL error "-180" 【发布时间】:2017-07-24 09:38:31 【问题描述】:我正在尝试从在 Timestamp 列上添加过滤器的表中导出数据,但它返回 SQL 错误“-180”SQLSTATE=22007。
EXPORT TO "e:\temp\SPO_DPDN_DET.csv" OF DEL MODIFIED BY coldel, codepage=1208 MESSAGES "e:\temp\SPO_DPDN_DET.log"
select * from mcare.SPO_DPDN_DET001 where SP_CODE in('919097','919025') AND APPR_TIME BETWEEN '11.07.2017' and '24.07.2017';
APPR_TIME
是 Timestamp
列。我收到此错误:
SQL3104N 导出实用程序开始将数据导出到文件“e:\temp\SPO_DPDN_DET.csv”。
SQL3015N 处理期间发生 SQL 错误“-180”。
SQL0180N 日期时间值的字符串表示的语法不正确。 SQLSTATE=22007
SQL3105N 导出实用程序已完成导出“0”行。
【问题讨论】:
错误信息的哪一部分似乎不清楚? 【参考方案1】:如果 APPR_TIME 的数据类型是“timestamp”,则使用有效的时间戳文字,否则如果它是数据类型“date”,则使用有效的日期文字。
更易于使用 ISO 格式文字,例如时间戳文字为“2017-07-11-00.00.00.000000”,或者日期为“2017-07-11”(对于 7 月 11 日,即 yyyy-mm- dd 格式)。
【讨论】:
【参考方案2】:您的 between 不适用于时间戳,就像 mao 向您解释的那样,您也可以像这样转换为日期:
select * from mcare.SPO_DPDN_DET001
where SP_CODE in ('919097','919025')
AND date(APPR_TIME) BETWEEN '2017-07-11' and '2017-07-24';
【讨论】:
以上是关于导出带有时间戳列 SQL 错误“-180”的 DB2 表过滤器的主要内容,如果未能解决你的问题,请参考以下文章