插入SQL Server DB语句日期转换
我的insert语句失败,引发以下错误: 味精242,第16级,第3状态,第1行插入SQL Server DB语句日期转换,sql,sql-server,Sql,Sql Server,我的insert语句失败,引发以下错误: 味精242,第16级,第3状态,第1行 将varchar数据类型转换为datetime数据类型导致值超出范围。声明已终止 以下是insert语句: INSERT INTO JOBR_GENERIC (ID, NUM_ATTR1, STR_ATTR1, TYPE, PLANT_ID, MATERIAL_NUMBER, ORDERNO, LOTNO, QTY, DATE_ATTR1,
将varchar数据类型转换为datetime数据类型导致值超出范围。声明已终止 以下是insert语句:
INSERT INTO JOBR_GENERIC (ID, NUM_ATTR1, STR_ATTR1, TYPE, PLANT_ID,
MATERIAL_NUMBER, ORDERNO, LOTNO, QTY, DATE_ATTR1,
STR_ATTR2, NUM_ATTR2, NUM_ATTR3, NUM_ATTR4,
STR_ATTR3, NUM_ATTR5, NUM_ATTR6, NUM_ATTR7,
NUM_ATTR9, NUM_ATTR10, NUM_ATTR11, DATE_ATTR2,
DATE_ATTR3, DATE_ATTR4, NUM_ATTR12, NUM_ATTR13, STR_ATTR4, JOBR_TS)
VALUES (153322, 401129, '901', 'A', 'A85',
'8ALD160', '', '6666666A', 8, CONVERT(DATETIME, '24/06/2017 00:00:00', 120),
'Test', 1, 9, 1,
'', 36, 99999999, 0,
109, 0, 0, CONVERT(DATETIME, '15/06/2018 16:08:26:397', 120),
CONVERT (DATETIME, '15/06/2018 16:08:26:397', 120), CONVERT(DATETIME, '', 120), 0, 0,
'A85', CONVERT(DATETIME, '2018-07-05 12:31:34', 120))
您尝试使用的格式是ODBC YYYY-MM-DD格式,但是,您有一个DD/MM/YYYY格式的日期参数。这将不起作用。您尝试使用的格式是ODBC YYYY-MM-DD格式,但是,您有一个DD/MM/YYYY格式的日期参数。这不起作用。您的代码
CONVERT(DATETIME,'15/06/2018 16:08:26:397',120)
是错误的(您的大多数其他CONVERT语句也是错误的)
120
告诉SQL将日期格式化为yyyy-mm-dd hh:mi:ss
。检查格式列表
确保您的文本格式与您告诉服务器的内容相匹配<代码>103(匹配dd/mm/yyyy
)适用于上述示例:
CONVERT(DATETIME, '15/06/2018 16:08:26:397', 120)
我还建议在整个查询中使用一致的日期格式,而不是像现在这样进行混合和匹配。一致的方法将使维护代码和发现错误更加容易。您的代码CONVERT(DATETIME,'15/06/2018 16:08:26:397',120)
是错误的(您的大多数其他CONVERT语句也是错误的)
120
告诉SQL将日期格式化为yyyy-mm-dd hh:mi:ss
。检查格式列表
确保您的文本格式与您告诉服务器的内容相匹配<代码>103(匹配dd/mm/yyyy
)适用于上述示例:
CONVERT(DATETIME, '15/06/2018 16:08:26:397', 120)
我还建议在整个查询中使用一致的日期格式,而不是像现在这样进行混合和匹配。一致的方法将使维护代码和发现错误更加容易。(1)您不需要转换。只需在适当的类型中使用字符串
(2) 将空字符串转换为日期/时间没有意义。只需使用NULL
或将该列从insert
中删除即可。因此:
VALUES (153322, 401129, '901', 'A', 'A85', '8ALD160', '', '6666666A', 8,
'2017-06-24 00:00:00', 'Test', 1, 9, 1, '', 36, 99999999,
0, 109, 0, 0, '2018-06-15 16:08:26:397',
'2018-06-15 16:08:26:397', NULL, 0, 0, 'A85',
'2018-07-05 12:31:34'
)
(1) 您不需要进行转换。只需在适当的类型中使用字符串
(2) 将空字符串转换为日期/时间没有意义。只需使用NULL
或将该列从insert
中删除即可。因此:
VALUES (153322, 401129, '901', 'A', 'A85', '8ALD160', '', '6666666A', 8,
'2017-06-24 00:00:00', 'Test', 1, 9, 1, '', 36, 99999999,
0, 109, 0, 0, '2018-06-15 16:08:26:397',
'2018-06-15 16:08:26:397', NULL, 0, 0, 'A85',
'2018-07-05 12:31:34'
)
仅供参考,我将您不正确的MySQL标记更改为SQL Server,因为这显然是SQL Server代码(和错误)。请检查您是否为所指的产品使用了适当的标记,谢谢。仅供参考,我将您不正确的MySQL标记更改为SQL Server,因为这显然是SQL Server代码(和错误)。请检查您是否为您所指的产品使用了适当的标签,谢谢。