declare @Sampledate table (SampleDate datetime)
insert into @Sampledate
select
'04/07/2018 18:18:29'
我收到错误:
从字符串转换日期和/或时间时转换失败。
AS将这样的数据从浏览器传输到SQL。如何解决?
请尝试以相同的方式插入。一行中的日期和另一行中的时间。需要快速回复。
答案 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),'')