无法插入表格

时间:2018-04-01 07:02:06

标签: sql

enter image description here

declare @Sampledate table (SampleDate datetime)

insert into @Sampledate
    select 
        '04/07/2018 18:18:29'

我收到错误:

  

从字符串转换日期和/或时间时转换失败。

AS将这样的数据从浏览器传输到SQL。如何解决?

请尝试以相同的方式插入。一行中的日期和另一行中的时间。需要快速回复。

2 个答案:

答案 0 :(得分:0)

如果是 SQL Server ,则有两种选择:

选项1 :在字符串文字中使用 ISO-8601 日期格式独立于SQL Server实例中的语言/区域设置 - 建议使用永远使用 - 它只是帮助避免麻烦:

INSERT INTO @Sampledate(SampleDate)
    SELECT '2018-04-07T18:18:29'

这是一个YYYY-MM-DDTHH:MM:SS格式的日期 - 无论您在SQL Server中的设置如何,它都将始终有效 - 而其他许多格式有时可以使用,但不会在其他时间使用。

选项2 :使用DATETIME2(n)数据类型(而不是DATETIME),这对于插入的字符串文字格式来说不那么“挑剔”。

DECLARE @Sampledate TABLE (SampleDate DATETIME2(0));

INSERT INTO @Sampledate(SampleDate)
    SELECT
        '04/07/2018 18:18:29'

可能工作 - 再次,不那么挑剔,但字符串文字依赖于您的语言/区域设置 - 可能工作 - 或不。使用选项#1绝对是您更安全的选择 - 但是,我建议使用DATETIME2(n)而不是DATETIME(从SQL Server 2008 开始) - 这样做会更好数据类型(使用更少的空间,提供更大的日期范围,减少插入值的麻烦 - 真正的好处!)

答案 1 :(得分:0)

如果您坚持将日期和时间分为两行,则需要删除换行符或运营商退货。

declare @sampledate table (sampledate datetime)
insert into @sampledate select REPLACE('04/07/2018 
18:18:29',CHAR(10),'')

OR

declare @sampledate table (sampledate datetime)
insert into @sampledate select REPLACE(REPLACE('04/07/2018 
18:18:29',CHAR(10),''),CHAR(13),'')