Sql server 如何转换';2018年12月31日和27日;使用TSQL键入日期

Sql server 如何转换';2018年12月31日和27日;使用TSQL键入日期,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我累了 select CONVERT(DATE, '31/12/18', 103) as rDatum 但我得到了一个错误: Conversion failed when converting date and/or time from character string. 在TSQL中,转换日期为年到日期较短的字符串的正确方法是什么?试试这个 SET DATEFORMAT DMY INSERT INTO targetTable (rDatum, col2 etc) SELECT CAST(

我累了

select CONVERT(DATE, '31/12/18', 103) as rDatum
但我得到了一个错误:

Conversion failed when converting date and/or time from character string.
在TSQL中,转换日期为年到日期较短的字符串的正确方法是什么?

试试这个

SET DATEFORMAT DMY

INSERT INTO targetTable (rDatum, col2 etc)
SELECT CAST(someDate AS DATE) , col2 etc
FROM sourceTable
select CONVERT(DATE, '31/12/18', 3) as rDatum
试试这个

SET DATEFORMAT DMY

INSERT INTO targetTable (rDatum, col2 etc)
SELECT CAST(someDate AS DATE) , col2 etc
FROM sourceTable
select CONVERT(DATE, '31/12/18', 3) as rDatum
你很接近

这是。格式代码为
3
103
为4位年份)

试试这个

SET DATEFORMAT DMY

INSERT INTO targetTable (rDatum, col2 etc)
SELECT CAST(someDate AS DATE) , col2 etc
FROM sourceTable
select CONVERT(DATE, '31/12/18', 3) as rDatum
你很接近

这是。格式代码为
3
103
为4位年份)

试试这个

SET DATEFORMAT DMY

INSERT INTO targetTable (rDatum, col2 etc)
SELECT CAST(someDate AS DATE) , col2 etc
FROM sourceTable
select CONVERT(DATE, '31/12/18', 3) as rDatum

不,您应该将第三个参数与
CONVERT
一起使用。您的方法可能有效,但可能会产生意外的副作用,因为它会影响整个批次。此外,您不能使用此内联。不利于视图或ITVF…嗯,我需要将数据插入表中。我应该把日期格式命令放在哪里?@Shnugo为什么?@Cool\u Br33ze您的建议清楚地表明,您不必担心特定的(范围严格的)转换提示。您依赖于隐式转换,并在插入之前的任意位置使用常规
SET DATEFORMAT
解决此问题。但这将对日期值需要转换为(或从)字符串的任何地方产生影响。如果在插入后不重新设置(在这种情况下,您应该缓冲实际值!),则此选项将保持活动状态。这是程序性思维。虽然一次性操作可以,但您应该使用第三个参数
CONVERT
。@Cool\u Br33ze,您使用
CAST(…AS DATE)
进行的编辑-从这个角度看-甚至比以前更糟。。。千万不要依赖日期/时间值的隐式转换…不,您应该将第三个参数与
CONVERT
一起使用。您的方法可能有效,但可能会产生意外的副作用,因为它会影响整个批次。此外,您不能使用此内联。不利于视图或ITVF…嗯,我需要将数据插入表中。我应该把日期格式命令放在哪里?@Shnugo为什么?@Cool\u Br33ze您的建议清楚地表明,您不必担心特定的(范围严格的)转换提示。您依赖于隐式转换,并在插入之前的任意位置使用常规
SET DATEFORMAT
解决此问题。但这将对日期值需要转换为(或从)字符串的任何地方产生影响。如果在插入后不重新设置(在这种情况下,您应该缓冲实际值!),则此选项将保持活动状态。这是程序性思维。虽然一次性操作可以,但您应该使用第三个参数
CONVERT
。@Cool\u Br33ze,您使用
CAST(…AS DATE)
进行的编辑-从这个角度看-甚至比以前更糟。。。千万不要依赖日期/时间值的隐式转换…如果没有设置“SET DATEFORMAT DMY”@Vlad,它就会失败。我不敢相信这一点,并再次尝试。即使您使用了错误的值来设置日期格式,这种方法仍然有效<当指定第三个参数时,code>CONVERT()将不查看默认设置。目前我无法用v2008测试这一点,但我怀疑这是否会产生任何影响。这是第三个参数的唯一含义…如果没有设置“SET DATEFORMAT DMY”@Vlad,它就会失败。我无法相信这一点,并再次尝试。即使您使用了错误的值来设置日期格式,这种方法仍然有效<当指定第三个参数时,code>CONVERT()将不查看默认设置。目前我无法用v2008测试这一点,但我怀疑这是否会产生任何影响。这是第三个参数的唯一含义。。。