Context是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成功运行:
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (CURRENT_DATE);
2)以下INSERT不起作用并返回错误:INSERT失败[26665]日期无效。
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (02/02/2016);
3)但是,如果我使用字符串'日期值'并将它作为它的工作日期。
INSERT INTO JOCOOPER.RSN_WEEKLY_TMP (EXPLICIT_DATE) VALUES (CAST('02/03/2016' AS DATE FORMAT 'MM/DD/YYYY') );
我需要知道如何使#2示例工作?请告知?
答案 0 :(得分:1)
02/02/2016
是一个INTEGER计算,到2016年将2除以2,结果为零,当然这不是有效日期。
CAST('02/03/2016' AS DATE FORMAT 'MM/DD/YYYY')
有效,因为它告诉解析器如何将字符串转换为DATE。
唯一推荐(和最短)方式是标准SQL DATE文字:
DATE '2016-02-03'
您永远不需要考虑格式,因为只有一种格式:YYYY-MM-DD
答案 1 :(得分:0)
实际上,这种格式也适用
e = {}
for i in range(0,len(length_of_the_row)):
e[i] = a,b,c,d
在你的例子中:
insert into datecol select '2015/12/31';