【问题标题】:How can I format a datetime to varchar with the format dd-MMM-yyyy?如何使用 dd-MMM-yyyy 格式将日期时间格式化为 varchar?
【发布时间】:2012-06-05 01:54:19
【问题描述】:

我觉得这应该是一个简单的解决方案,但我在上面找不到任何东西......

那么:我如何使用 dd-MMM-yyyy 格式从 datetime 转换为 varchar

Eg: my_date --> '29-May-2012'

我已经设法结束了

convert(varchar(20),my_date,105) --> '29-05-2012'

是的,我确实需要在 T-SQL 中正确执行此操作。

【问题讨论】:

    标签: sql-server tsql sql-server-2005


    【解决方案1】:

    本机不支持这种格式,但来自Build a cheat sheet for SQL Server date and time formats,最接近的可能是:

    SELECT REPLACE(CONVERT(CHAR(11), GETDATE(), 106), ' ', '-');
    

    此答案的先前版本推荐 FORMAT(),但我已经尝试并相信 that's a bad idea at scale,除非您只想让所有查询花费两倍的时间。

    【讨论】:

    • 106!很简单,谢谢。接受这个“面向未来”的答案。 :)
    【解决方案2】:

    你可以使用:

    SELECT replace(convert(char(11), getdate(), 113), ' ', '-')
    

    SELECT replace(convert(char(11), getdate(), 106), ' ', '-')
    

    【讨论】:

    • 为什么是varchar(20)?为什么还要varchar?格式是固定长度的。
    • @KM。更新了我的答案,我刚开始写的时候只是增加了一个长度
    • 我认为他只是在附和 OP。我可能会使用 char(11) 来明确。但是,也许目的是填充 varchar(20) 列。
    • 为什么要先转换 varchar(25) 然后再左转(11)?应该只是 char(11)。
    • @AaronBertrand 你是对的,我修好了。我应该更清楚你喜欢在那个问题上叫我出来。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 2018-03-29
    • 1970-01-01
    • 2021-08-17
    • 1970-01-01
    • 1970-01-01
    • 2013-11-10
    相关资源
    最近更新 更多