在T-SQL中转换字符串(YYYYMMDD)

时间:2011-01-30 08:39:19

标签: sql sql-server tsql datetime-conversion

我有一个列为exit_date的varchar,如5/21/2008 0:00,我需要将其更新为YYYYMMDD这样的字符串,无论如何都可以这样做?

5/21/2008 0:00  ==> 20080521  
1/1/2007 0:00   ==> 20070101

如何做

之类的事情
select convert('5/21/2008 0:00', 'YYYYMMDD').

4 个答案:

答案 0 :(得分:4)

CONVERT允许在两个方向上转换日期时间/ varchar的样式。说,你有一个未列出的格式。而且你实际上也有2次转换:你需要首先进入日期时间

在我的本地SQL安装中,它具有默认的“us_english”设置,这是开箱即用的

select convert(datetime, '5/21/2008 0:00')

从而

select convert(char(8), convert(datetime, '5/21/2008 0:00'), 112)

您可以使用SET LANGUAGE暂时修改为us_english

答案 1 :(得分:2)

答案 2 :(得分:1)

我首先没有看到需要转换的 varchar列

所以,正如我在对Gidon的回答中所说的那样,基本上你可能会这样:CONVERT(varchar(8), CAST(your_varchar_date AS datetime), 112)

如果您要就地转换价值,那么这里有一个更全面的例子来说明如何应用它:

UPDATE your_table
SET exit_date = CONVERT(varchar(8), CONVERT(datetime, exit_date), 112)

答案 3 :(得分:1)

我刚刚在我的博客上发布了一个函数,以使用.Net样式格式掩码支持T-SQL中的日期转换。不试图插入我的博客或任何东西它只是我发布我的代码片段的地方。

使用我的函数SELECT dbo.fnc_FormatDate(getdate(), 'YYYYMMDD')将执行您想要的操作。

http://bitmugger.blogspot.com/2011/07/convert-t-sql-datetime-to-strings-using.html