我有一条sql语句,我想将其计算结果写入表中。
我得到了一个临时的结果。但是很不幸,我无法将这些结果转移到新表中,因为它说的温度是没有定义的。
SELECT BUM.LMISTAT_import.UhrzeitBeginn, BUM.LMISTAT_import.UhrzeitEnde,BUM.LMISTAT_import.DatumEnde,BUM.LMISTAT_import.DatumBeginn,
TIMESTAMPDIFF(DAY, CAST(CONCAT(RIGHT(BUM.LMISTAT_import.DatumBeginn,2),'-',MID(BUM.LMISTAT_import.DatumBeginn,4,2),'-',LEFT(BUM.LMISTAT_import.DatumBeginn,2)) AS DATETIME),
CAST(CONCAT(RIGHT(BUM.LMISTAT_import.DatumEnde,2),'-',MID(BUM.LMISTAT_import.DatumEnde,4,2),'-',LEFT(BUM.LMISTAT_import.DatumEnde,2)) AS DATETIME)) AS temp
FROM BUM.LMISTAT_import;
INSERT INTO BUM.LMISTAT_import(BUM.LMISTAT_import.factor)
VALUES (temp)
;
actual SQL结果=“ 1054:字段列表中的列温度未知”;
预期结果是,表..._ import.factor中填充了来自临时值。
答案 0 :(得分:0)
您要寻找CREATE TABLE temp AS
SELECT i.UhrzeitBeginn, i.UhrzeitEnde,
i.DatumEnde, i.DatumBeginn,
TIMESTAMPDIFF(DAY,
CAST(CONCAT(RIGHT(i.DatumBeginn, 2), '-', MID(i.DatumBeginn,4,2), '-', LEFT(i.DatumBeginn,2)) AS DATETIME),
CAST(CONCAT(RIGHT(i.DatumEnde, 2), k'-', MID(i.DatumEnde, 4, 2), '-', LEFT(i.DatumEnde,2)) AS DATETIME)
) AS temp
FROM BUM.LMISTAT_import i;
吗?
:active
答案 1 :(得分:0)
您可能想要SELECT...INTO。
在您的第一个查询中,“ AS temp”将为您的结果集创建别名,而不是“ VALUES(...)”所要求的列列表,但在这里仍然无法使用。
答案 2 :(得分:0)
考虑语法
INSERT INTO temp (a,b,c)
SELECT x,y,z ...;
甚至
CREATE TABLE temp (a,b,c)
SELECT x,y,z ...;
尝试返回DatumBeginn
并将其存储为yyyy-mm-dd的DATE
,而不是其他形式。
如果失败,请使用STR_TO_DATE()作为解析格式错误的日期字符串的更为简洁的方法。
格式正确的字符串不需要CAST( ... AS DATE)