代码之家  ›  专栏  ›  技术社区  ›  akkapolk

FORMAT([time],'hh:mm')返回空值

  •  0
  • akkapolk  · 技术社区  · 6 年前

    我有一张日历桌 with the following structure :

    CalendarID    nvarchar(13)
    Date          date
    Time          time(7)
    

    数据包括:

    Calendar table data

    将时间列格式化为 hhmm 作品:

    SELECT [CalendarID]
         , FORMAT([Date], 'ddd, MMM dd, yyyy') AS [DATE]
         , FORMAT([Time], 'hhmm') AS [Time]
    FROM [dbo].[Calendar]
    

    select time format (hhmm)

    但格式设置为 hh:mm 不工作和显示 NULL :

    SELECT [CalendarID]
         , FORMAT([Date], 'ddd, MMM dd, yyyy') AS [DATE]
         , FORMAT([Time], 'hh:mm') AS [Time]
    FROM [dbo].[Calendar]
    

    select time format (hh:mm)

    我怎样把它格式化为 HH:毫米 ?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Salman Arshad    6 年前

    From the docs :

    格式依赖于clr格式规则,它规定冒号和 必须转义句点。因此,当格式字符串(秒 参数)包含冒号或句点,冒号或句点必须是 当输入值(第一个参数)为 时间数据类型。

    这应该有效:

    SELECT FORMAT(CAST('09:00:00.1234567' AS TIME(7)), 'hh\:mm')              -- 09:00
    SELECT FORMAT(CAST('09:00:00.1234567' AS TIME(7)), 'hh\:mm\:ss\.fffffff') -- 09:00:00.1234567
    
        2
  •  1
  •   Seyhmus Gokcen    6 年前

    您可能需要检查有关日期和日期时间的文档

    https://docs.microsoft.com/en-us/sql/t-sql/functions/date-and-time-data-types-and-functions-transact-sql?view=sql-server-2017

    拉努警告后

    更新:

    通过上面的链接,您可以像这样格式化时间;

    SELECT FORMAT(cast(GETDATE() as time), N'hh\:mm\:ss');
    
        3
  •  1
  •   Derviş Kayımbaşıoğlu    6 年前

    试试这个方法:

    FORMAT([Time], N'hhmm') AS [Time]
    

    FORMAT([Time], N'hh\:mm') AS [Time]