【问题标题】:Convert SQL Server Date Format转换 SQL Server 日期格式
【发布时间】:2019-01-23 07:33:35
【问题描述】:

我正在使用这个查询:

select convert(nvarchar(MAX), getdate(), 100);

它回来了

Aug 16 2018  3:45PM

我正在尝试获取此日期格式:

16 AUG 15:45

请帮助我实现它。谢谢

【问题讨论】:

  • 你不想要年?
  • 为什么 01:38 AM 变成了 13:38? AM 是上午,不是下午。
  • @AmitKumar 是的,不是年份。
  • 自从我上次评论以来现在的不同值,为什么下午 3:45 变成了 14:45?总是提前一个小时吗?
  • @Larnu 请检查最新编辑。

标签: sql sql-server date formatting format


【解决方案1】:

试试这个

查询:

select UPPER(FOrmat(GETDATE(),'dd MMM HH:mm'))

结果: 8 月 16 日 17:04

【讨论】:

    【解决方案2】:

    这可以让你得到你想要的,并且不使用非常慢的 FORMAT 函数:

    SELECT D, CONVERT(varchar(6),DATEADD(HOUR, -1, D),13) + ' ' + CONVERT(varchar(5),CONVERT(time(0),DATEADD(HOUR, -1, D)),14)
    FROM (VALUES(CONVERT(datetime2(0),'2018-08-16T15:45:00'))) V(d);
    

    编辑:似乎 OP 再次移动了目标帖子(最初他们希望将时间从上午 01:38 更改为 13:38,然后从下午 03:45 更改为 14:45 ),因此不需要DATEADD。不过,我并没有费心删除它,因为当时它是正确的;而且我不相信球门柱不会再次移动。

    【讨论】:

      【解决方案3】:

      使用upper 和'dd MMM HH:mm', 'en-US' 格式

      SELECT Upper( FORMAT( getdate(), 'dd MMM HH:mm', 'en-US' ))
      
      it reutrns 16 AUG 11:03
      

      【讨论】:

      • @JoakimDanielson 是的,谢谢,我已经添加了,请您现在更改您的反对票
      • 不使用upper()可以吗?
      【解决方案4】:

      试试这个:带格式功能

      SELECT upper(FORMAT( getdate(), 'dd MMM HH:mm', 'en-US')) 
      

      【讨论】:

      • 如何将Aug 更改为AUG
      • 看UPPER()函数。
      • 试试这个:upper(FORMAT(getdate(), 'dd MMM HH:mm', 'en-US'))
      • 不使用upper() 可以得到吗?
      • 据我所知,只使用格式函数,不可能,你必须使用upper。
      【解决方案5】:

      试试这个

      大写“Aug”到“AUG”

      SELECT UPPER( FORMAT( GETUTCDATE(), 'dd MMM HH:mm', 'en-US' ) )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多