【问题标题】:Convert string in T-SQL (YYYMMDD)在 T-SQL 中转换字符串 (YYYMMDD)
【发布时间】:2011-01-30 08:39:19
【问题描述】:

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

【问题讨论】:

    标签: sql sql-server tsql datetime-conversion


    【解决方案1】:

    CONVERT 允许在两个方向上转换 datetime/varchar 的样式。话虽如此,您有一个未列出的格式。而且您实际上也有 2 次转换:您需要先将其转换为日期时间

    在具有默认“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

    【讨论】:

    • +1。我一定以某种方式错过了你的答案,否则我不会发布我的。 (我可能在回答之前打开页面太久了。)无论如何,关于语言设置的好点。也应该记住这一点。
    【解决方案2】:

    【讨论】:

    • 不错的链接.. gr8 one... 如果它也包含答案会更好.. SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD]
    • @gidion,感谢您的链接 ;) SELECT CONVERT(VARCHAR(8), GETDATE(), 112) AS [YYYYMMDD] 是 OP 需要的 ;)
    • @KoolKabin,LOL... 有了如此庞大的选项列表,我猜答案就在其中。如果没有,希望提问者能够从信息中推断出答案。
    • 但这并不能解决我的问题,如何使用 select convert('5/21/2008 0:00' XXXXX) 来获取 YYYYMMDD?
    • 答案是:不要那样用,这是错误的语法。 SELECT CONVERT(VARCHAR(8), CONVERT(DATETIME, '5/21/2008 0:00'), 112) 是您应该在特定示例中使用的内容。
    【解决方案3】:

    我首先没有看到需要转换的是 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)
    

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2019-10-26
        • 1970-01-01
        • 2017-10-15
        • 2019-04-16
        • 1970-01-01
        • 2014-09-26
        • 2010-09-23
        • 2010-11-19
        • 2011-05-20
        相关资源
        最近更新 更多