【问题标题】:Date format returned as mm/dd/yyyy hh:mm:ss AM/PM日期格式返回为 mm/dd/yyyy hh:mm:ss AM/PM
【发布时间】:2014-09-26 16:13:44
【问题描述】:

我是 sql 的新手,我的公司只是有点把我的头放在这上面并说去做。因此,非常感谢任何帮助。我正在尝试以 mm/dd/yyyy hh:mm:ss AM/PM 的格式显示日期,例如 09/26/2014 11:04:54 AM 的日期。我试过使用代码:

Select Convert(nvarchar,EntryDate,101)
From DB1

但是,它只返回 2014 年 9 月 26 日。 我也试过了

Select Convert(nvarchar,EntryDate,100)
From DB1

但这会返回 2014 年 9 月 26 日上午 11:04

不知道从这里去哪里。再一次感谢你的帮助。顺便说一句,我使用的是 SQL Server 2012。

【问题讨论】:

标签: sql date datetime sql-server-2012


【解决方案1】:

由于您使用的是 SQL 2012,格式功能应该可以工作:

declare @date datetime = '2014-09-26 11:04:54'
select FORMAT(@date,'MM/dd/yyyy hh:mm:s tt')

结果:09/26/2014 11:04:54 AM

在你的情况下是:

Select FORMAT(EntryDate,'MM/dd/yyyy hh:mm:s tt')
From DB1

【讨论】:

  • 不知道为什么,但我收到错误,格式是一个无法识别的功能。我什至仔细检查以确保我在 SSMS 2012 中,因为我在计算机上同时拥有 2012 年和 2008 年
  • Server 可能不是 2012 年的,只是我的前端程序才有意义。好主意。
  • select FORMAT(getdate(),'dd/MMM/yyyy hh:mm:s tt') 此命令在 SQL 2012 服务器中完美运行。它也适用于 SQL 2008。
  • 格式是最好的选择,因为它允许我们编写我们想要的任何文化
  • 感谢您告诉我们这件事!你改变了我的生活!在我看来,不再有无法理解的 101、132 等!!!
【解决方案2】:
DECLARE @Date_Value DATETIME = GETDATE();


SELECT CONVERT(VARCHAR(10), @Date_Value, 101) + ' ' 
       + LTRIM(RIGHT(CONVERT(CHAR(20), @Date_Value, 22), 11))


RESULT: 09/26/2014 5:25:53 PM

您的查询

SELECT CONVERT(VARCHAR(10), EntryDate, 101) + ' ' 
       + LTRIM(RIGHT(CONVERT(CHAR(20), EntryDate, 22), 11))
From DB1

【讨论】:

    【解决方案3】:
        > select convert(varchar(20),GETDATE(),1)+' '+convert(varchar(20),convert(time,getdate()),100)
        > select convert(varchar(20),GETDATE(),103)+' '+convert(varchar(20),convert(time,getdate()),100)
        > select convert(varchar(20),GETDATE(),103)+' '+convert(varchar(20),convert(time,getdate()),22)
    
    
        > Result (1) :-  10/15/2018 11:22AM (mm/dd/yyyy hh:mm AM/PM)
        > Result (2):-  15/10/2018 11:22AM (dd/mm/yyyy hh:mm AM/PM)
        > Result (3):-  15/10/2018 11:22:35 AM (dd/mm/yyyy hh:mm:ss AM/PM)
    

    【讨论】:

    • 我有两个查询第一个查询返回 mm/dd/yyyy hh:mm AM/PM,第二个查询是 dd/mm/yyyy hh:mm AM/PM
    【解决方案4】:

    可以在sql中使用FORMAT函数

    SELECT FORMAT(@date,'MM/dd/yyyy hh:mm:s tt')
    

    【讨论】:

      【解决方案5】:

      您应该这样做以将日期转换为您要求 DATE_FORMAT(date,'%m %d %Y %h:%i %p') 的格式。其中 date 是您要转换的日期。

      我希望这会有所帮助。

      【讨论】:

        【解决方案6】:

        使用两种格式并将它们与 REPLACE 和 SUBSTRING 函数连接起来。

           select CONVERT(nvarchar(128), dbo.GetDateTime(@input), 101) + 
                   REPLACE(SUBSTRING(CONVERT(nvarchar(128), 
                   dbo.GetDateTime(@input), 109), 12 , 128),':000', ' ')
        

        【讨论】:

          【解决方案7】:

          结合两种格式:

          select convert(char(11),getdate(),103) 
                + stuff(right(convert(char(31),getdate(),130),14),9,4,' ')
          

          产量:

          26/09/2014 12:29:09 PM
          

          【讨论】:

            【解决方案8】:

            这是解决相同问题的另一种方法。

            Select Convert(char(10), getdate(),101) + Right(Convert(VarChar(20),getdate(),100),8)
            

            【讨论】:

              猜你喜欢
              • 2018-09-18
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-08-21
              • 2017-04-08
              • 2018-04-06
              • 2019-06-18
              • 1970-01-01
              相关资源
              最近更新 更多