3706 teradata 语句报错_Teradata SQL

3706 teradata 语句报错_Teradata SQL刚用 SQL 语句查询的时候发现了一个问题 CREATESETTAB AUTO ETL Received File NOFALLBACK NOBEFOREJOUR NOAFTERJOURN CHECKSUM DEFAULT ETL SystemCHAR 3 CHARACTERSET ETLSys

刚用SQL语句查询的时候发现了一个问题

CREATE SET TABLE PD_AUTO.ETL_Received_File ,NO FALLBACK ,

NO BEFORE JOURNAL,

NO AFTER JOURNAL,

CHECKSUM = DEFAULT

(

ETL_System CHAR(3) CHARACTER SET LATIN NOT CASESPECIFIC TITLE ‘ETL System Name’ NOT NULL,

ETL_Job VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC TITLE ‘ETL Job Name’ NOT NULL,

JobSessionID INTEGER TITLE ‘Job Session ID’ NOT NULL,

ReceivedFile VARCHAR(50) CHARACTER SET LATIN NOT CASESPECIFIC TITLE ‘Received File Name’ NOT NULL,

FileSize DECIMAL(18,0) TITLE ‘File Size’,

ExpectedRecord INTEGER TITLE ‘Expected Record’,

ArrivalTime CHAR(19) CHARACTER SET LATIN NOT CASESPECIFIC TITLE ‘Arrival Time’,

ReceivedTime CHAR(19) CHARACTER SET LATIN NOT CASESPECIFIC TITLE ‘Received Time’,

Location VARCHAR(128) CHARACTER SET LATIN NOT CASESPECIFIC,

Status CHAR(1) CHARACTER SET LATIN NOT CASESPECIFIC)

UNIQUE PRIMARY INDEX XAK1ETL_Received_File ( ETL_System ,ETL_Job ,

ReceivedFile );

ArrivalTime 为CHAR(19)类型,在用CAST函数做转换的时候报错

select cast(ArrivalTime as Date FORMAT ‘YYYYMMDD’)

from pd_auto.etl_received_file

错误信息为Invalid date supplied for ETL_Received_File.ArrivalTime

不知道问题的原因所在,试了好几个写法

select CAST(Trim(substr(ArrivalTime,1,10)))  as Date format ‘YYYYMMDD’)

from pd_auto.etl_received_file

这样写也不行,FORMAT函数没起到作用得到的结果为2009-11-19,字符串没有被格式化

后来换了一种写法

select *

from pd_auto.etl_received_file

where CAST(CAST(ArrivalTime  as timestamp(0)) as Date format ‘YYYYMMDD’) >= Date ‘2009-12-01’

这样写没有出现错误

不知道cast函数为什么就不能直接将char类型转换为date型……

内置函数cast … to date不支持这种格式,没有replace内置函数,因此只能用类似自定义函数的功能。teradata仅支持基于c语言的函数,不支持teradta sql函数,因此必须用sp或在sql中搞定。

用字符串列替换’2009-1-3’即可,就是这么个逻辑,不过可以考虑把这些重复的做到一个子查询中。

sel cast(Substr(‘2009-1-3’,1,4) ||

case when char(substr(‘2009-1-3’,Index(‘2009-1-3′,’-‘)+1,

Index(

Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)-(Index(‘2009-1-3′,’-‘)+1)))=1 then ‘0’ ||  substr(‘2009-1-3’,Index(‘2009-1-3′,’-‘)+1,

Index(

Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)-(Index(‘2009-1-3′,’-‘)+1))

else

substr(‘2009-1-3’,Index(‘2009-1-3′,’-‘)+1,

Index(

Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)-(Index(‘2009-1-3′,’-‘)+1))

end ||

case when char(substr(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,Index(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)+1))=1 then ‘0’ || substr(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,Index(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)+1)

else

substr(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,Index(Case

When Position(‘-‘ In ‘2009-1-3’) > 0

Then Substr(‘2009-1-3’,1,Position(‘-‘ In ‘2009-1-3’) – 1) || ‘*’ || Substr(‘2009-1-3’,Position(‘-‘ In ‘2009-1-3’) + character_length(‘-‘))

Else ‘2009-1-3’

End,’-‘)+1)

end as date format ‘yyyymmdd’) char_to_date;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211021.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午11:22
下一篇 2026年3月18日 下午11:23


相关推荐

  • 百度一下即梦ai和小云雀有什么区别?那个用起来更方便简单

    百度一下即梦ai和小云雀有什么区别?那个用起来更方便简单

    2026年3月13日
    1
  • Sikuli 优缺点

    Sikuli 优缺点Sikuli 的优缺点优点 1 与平台无关可以实现任意类型的 UI GUI 测试 轻松实现跨平台测试 并可以解决 web 测试中的浏览器兼容性测试问题 2 可读性强代码可读性强 用图形表示逻辑关系更生动 形象 容易理解 便于维护 3 提供 jar 包便于构建大型的测试框架 实现各类测试工具之间的互补 4 用例设计与程序实施可分离用例设计人员可以只关注图型逻辑关系和测试检查点

    2026年3月18日
    1
  • SpringBoot集成Redis并实现主从架构「建议收藏」

    SpringBoot集成Redis并实现主从架构「建议收藏」hello,你好呀,我是灰小猿,一个超会写bug的程序猿!今天这篇文章来和大家分享一下在springboot中如何集成redis,并实现主从架构,进行数据的简单存储。我的Redis是部署在Windows系统下面的,所以在这里附上Redis在Windows环境下的安装地址和安装说明。一、Windows环境下安装Redis首先去官网下载Redis的安装包,官方下载地址:https://github.com/tporadowski/redis/releases在其中选择当前版本即可。下载之后解压

    2025年12月6日
    7
  • d3js mysql_d3js技术文档

    d3js mysql_d3js技术文档D3js 技术文档概述 D3allowsyout DOM andthenapply driventransf Forexample youcanuseD3t

    2026年3月20日
    1
  • Linux磁盘管理和文件系统[通俗易懂]

    Linux磁盘管理和文件系统[通俗易懂]文章目录1.前言2.磁盘结构2.1设备文件2.2设备的命名规则(1)物理设备1.前言https://zhuanlan.zhihu.com/p/3397174632.磁盘结构2.1设备文件在linux系统中,一切皆文件,磁盘设备也是文件的一种。设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信设备号码:主设备号:majornumber,标识设备类型次设备号:minornumber,标识同一类型下的不同设备设备类型:块设备:block,存取单位“块”,磁盘

    2022年5月28日
    48
  • 配置HSRP「建议收藏」

    配置HSRP「建议收藏」HSRP(HotStandbyRouterProtocol,热备份路由选择协议)是Cisco私有的一种技术,他确保了网络边缘设备或接入链路出现故障时,用户通信能迅速并透明恢复,以此为IP网络提供冗余性。通过应用HSRP,可使用网络的正常运行时间接近100%,从而满足用户对网络可靠性的要求。在使用HSRP协议的网络中,可以通过将不同的活跃路由器指定不同的三层交换机。从而实现网络流量的…

    2025年8月7日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号