上下文为Teradata SQL Assistant
已成功创建下表:
CREATE VOLATILE TABLE RSN_WEEKLY_TMP, NO LOG
(
EXPLICIT_DATE DATE FORMAT 'MM/DD/YYYY'
)
PRIMARY INDEX (EXPLICIT_DATE)
ON COMMIT PRESERVE ROWS;1)以下插入成功:
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (CURRENT_DATE);2)以下插入不起作用,返回错误: INSERT Failed 26665 Invalid date。
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (02/02/2016);3)但是,如果我使用字符串'date value‘并将其转换为日期,则它可以工作。
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (CAST('02/03/2016' AS DATE FORMAT 'MM/DD/YYYY') );我需要知道如何使示例#2工作?请给我建议?
发布于 2016-02-02 05:42:28
02/02/2016是一个整数计算,2除以2除以2016,结果是零,当然这不是一个有效的日期。
CAST('02/03/2016' AS DATE FORMAT 'MM/DD/YYYY')之所以有效,是因为它告诉解析器如何将字符串转换为日期。
唯一推荐的(也是最短的)方法是使用标准SQL日期文字:
DATE '2016-02-03'您永远不需要考虑格式,因为只有一种:YYYY-MM-DD
发布于 2016-02-02 08:43:54
实际上,这种格式也适用
insert into datecol select '2015/12/31';在您的示例中:
CREATE VOLATILE TABLE RSN_WEEKLY_TMP, NO LOG
(
--EXPLICIT_DATE DATE FORMAT 'MM/DD/YYYY'
EXPLICIT_DATE DATE
)
PRIMARY INDEX (EXPLICIT_DATE)
ON COMMIT PRESERVE ROWS;
INSERT INTO RSN_WEEKLY_TMP (EXPLICIT_DATE) select '2016/02/02';https://stackoverflow.com/questions/35140762
复制相似问题