导出带有时间戳列 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_TIMETimestamp 列。我收到此错误:

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 表过滤器的主要内容,如果未能解决你的问题,请参考以下文章

将数据导出到 SQL DB 时闪亮禁用操作按钮 x 秒

自动生成的时间戳列(主键)到现有表 DB2

DB2用export命令导出表发生错误,错误提示如下

从 Mapr DB 表中推断为 InvalidType 的 Spark 数据帧时间戳列

使用 SSIS 在 DB2 表中设置时间戳列

使用 powershell 导出 azure db 时出错