【问题标题】:FORMAT([Time], 'hh:mm') returns NULLFORMAT([Time], 'hh:mm') 返回 NULL
【发布时间】:2019-06-10 07:33:44
【问题描述】:

我有一个日历表with the following structure

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

带有如下数据:

将时间列格式化为hhmm 有效:

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

但格式化为hh:mm 不起作用并显示NULL

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

如何将其格式化为hh:mm

【问题讨论】:

标签: sql sql-server date time format


【解决方案1】:

这样试试:

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

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

【讨论】:

  • 比你的建议。但是,它仍然不适合我。我正在使用 Microsoft SQL Azure (RTM) - 2018 年 11 月 20 日 12.0.2000.8 21:01:54 版权所有 (C) 2018 Microsoft Corporation。
【解决方案2】:

From the docs:

FORMAT 依赖于 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

【讨论】:

    【解决方案3】:

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

    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');
    

    【讨论】:

    • 欢迎来到 StackOverflow。仅链接的答案通常会吸引反对票,因为链接可能会失效,然后对其他人无用。如果您要链接到另一个站点作为答案,请务必包含网页中的相关部分以回答 OP 的问题。谢谢。
    • 谢谢 Lamu,实际上我试图将帖子作为评论发送,但堆栈溢出说“你不能在 50 声望下发表评论”并将其作为答案发送。抱歉,我会改进我的答案。
    • 正确,您需要 20 声望点才能对问题发表评论。获得这些并不需要很长时间,在这里改进您的答案是获得它们的一步。 :)
    【解决方案4】:

    它似乎对输入类型非常挑剔。这将返回 NULL:

    declare @theNow as time
    set @theNow = cast(getdate() as time)
    print format(@theNow, N'hh\:mm tt')
    

    而这将打印您预期的结果字符串:

    declare @theNow as datetime
    set @theNow = cast(getdate() as datetime)
    print format(@theNow, N'hh\:mm tt')
    

    我仍在尝试自己解决细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多