我正在使用postgres版本

version
PostgreSQL 8.0.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.4.2 20041017
(Red Hat 3.4.2-6.fc3), Redshift 1.0.880

我有一列存储为整数,但运行此查询会导致错误:
样本数据:
dept_dt

20141008
20141008
20141008
20141008
20141008
20141008
20141008
20141121
20141121
20141121

错误:数据值“dept_dt”的格式执行时间无效:1.21s
1条语句失败
运行此查询时:
select top 10 dept_dt ,to_date('dept_dt','YYYYMMDD')
FROM dept_dt_t
where dept_dt is not null;

最佳答案

基于TO_DATE()文档:
结束日期(字符串,格式)
要转换的字符串。
格式化字符串文字
根据日期定义要转换的字符串的格式
部分。有关有效格式的列表,请参见日期时间格式字符串。
需要stringdept_dt stored整数的位置。
先转换为字符串:

SELECT TOP 10 dept_dt ,TO_DATE(CAST(dept_dt AS CHAR(8)),'YYYYMMDD')
FROM dept_dt_t
WHERE dept_dt IS NOT NULL;

10-06 10:12