我有一个带有类似 varchar 的 exit_date 列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').
我有一个带有类似 varchar 的 exit_date 列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').
CONVERT 允许在两个方向上转换 datetime/varchar 的样式。话虽如此,您有一个未列出的格式。而且您实际上也有 2 次转换:您需要先将其转换为 datetime
在具有默认“us_english”设置的本地 SQL 安装中,这是开箱即用的
select convert(datetime, '5/21/2008 0:00')
因此
select convert(char(8), convert(datetime, '5/21/2008 0:00'), 112)
您可以使用 SET LANGUAGE 临时修改为 us_english
我首先没有看到它是一个需要转换的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)
我刚刚在我的博客上发布了一个函数,以支持使用 .Net 样式格式掩码在 T-SQL 中进行日期转换。不要试图插入我的博客或任何东西,它只是我发布我的代码片段的地方。
使用我的功能SELECT dbo.fnc_FormatDate(getdate(), 'YYYYMMDD')
会做你想做的事。
http://bitmugger.blogspot.com/2011/07/convert-t-sql-datetime-to-strings-using.html