【问题标题】:How to get time part from GetDate() As hh:mm tt in SQL Server如何从 GetDate() 获取时间部分作为 SQL Server 中的 hh:mm tt
【发布时间】:2015-05-21 06:39:55
【问题描述】:

这不是How to get time part from SQL Server 2005 datetime in 'HH:mm tt' format的重复

因为该问题的所有答案都返回下午 12:06(没有空格且需要空格)

我试图从 SQL GETDATE() 中获取时间部分

我正在尝试

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))

但它正在返回

12:06PM

我需要 12:06 PM(AM 或 PM 之前的空格)..

搜索了很多但失败了...

【问题讨论】:

标签: sql sql-server


【解决方案1】:

对于以上 SQL 2012:

SELECT FORMAT(GETDATE(), 'h:mm tt', 'en-US')

【讨论】:

    【解决方案2】:

    试试这个

    SELECT Replace(Replace(LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)),'PM',' PM'),'AM',' AM')
    

    【讨论】:

      【解决方案3】:

      你可以使用:

      select CONVERT(VARCHAR(5), GETDATE(), 108) + ' ' + 
             RIGHT(CONVERT(VARCHAR(30), GETDATE(), 9),2)
      

      SQL 小提琴:http://sqlfiddle.com/#!6/a7540/2377

      【讨论】:

        【解决方案4】:

        试试这个:

        SELECT substring(CONVERT(varchar(20), GetDate(), 9), 13, 5) + 
               ' ' + 
               substring(CONVERT(varchar(30), GetDate(), 9), 25, 2)
        

        【讨论】:

          【解决方案5】:

          经过大量练习后我得到的最短答案..

          SELECT CONVERT(VARCHAR(11), 
                        STUFF(RIGHT( 
                        CONVERT(VARCHAR,GETDATE(),100 ) ,7),
                        6, 0, ' '))
          

          谢谢大家

          【讨论】:

          • SQL 2012 或以上版本可以使用FORMAT()
          【解决方案6】:

          FORMAT(GETDATE(), 'h:mm tt', 'en-US')

          【讨论】:

          • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
          猜你喜欢
          • 2011-03-13
          • 1970-01-01
          • 2018-08-16
          • 1970-01-01
          • 2016-03-14
          • 1970-01-01
          • 2014-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多