我有一个列为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').
答案 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