Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入SQL Server DB语句日期转换_Sql_Sql Server - Fatal编程技术网

插入SQL Server DB语句日期转换

插入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,

我的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, 
                          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代码(和错误)。请检查您是否为您所指的产品使用了适当的标签,谢谢。