2

我有一个带有类似 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').
4

4 回答 4

4

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

于 2011-01-30T10:57:56.413 回答
2

前往http://www.sql-server-helper.com/tips/date-formats.aspx

于 2011-01-30T08:45:31.920 回答
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)
于 2011-01-30T11:39:25.750 回答
1

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

使用我的功能SELECT dbo.fnc_FormatDate(getdate(), 'YYYYMMDD')会做你想做的事。

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

于 2011-07-06T17:10:34.780 回答