【问题标题】:MS SQL : Convert datetime to web standards complient TIME formatMS SQL:将日期时间转换为符合 Web 标准的 TIME 格式
【发布时间】:2015-05-31 16:04:33
【问题描述】:

根据 web 规范的时间输入字段的官方格式。

W3 似乎表明接受的格式是:

23:20:50.52
17:39:57

http://www.w3.org/TR/html-markup/input.time.html


问题

  1. 时间输入字段应该完全填充秒和毫秒还是00:00 可以接受?

  1. 来自 MS SQL iS ISO8601 CONVERT 126 格式正确还是 SQL CONVERT 108 hh:mm:ss 可以接受?

    CONVERT(VARCHAR(10),[MyDate]),108) AS [MyDate]

Click for list of SQL CONVERT() Functions


  1. 使用 convert 126 从 MSSQL 日期时间字段中提取格式正确的时间字段的适当方法是什么?

【问题讨论】:

    标签: sql-server html datetime input time


    【解决方案1】:

    文档清楚地说明了时间值的可接受格式:

    值:[RFC 3339] 中定义的有效部分时间

    relevant part of RFC 3339 具有以下定义:

    time-hour       = 2DIGIT  ; 00-23
    time-minute     = 2DIGIT  ; 00-59
    time-second     = 2DIGIT  ; 00-58, 00-59, 00-60 based on leap second
                              ; rules
    time-secfrac    = "." 1*DIGIT
    
    partial-time    = time-hour ":" time-minute ":" time-second
                      [time-secfrac]
    

    这意味着 partial-time 由小时(2 位,24 小时表示法)、后跟冒号 (:)、后跟分钟(2 位)和另一个冒号,后跟秒,然后 可选 后跟小数部分(小数点后跟 1 个或多个数字)。

    因此,秒是强制性的,但小数部分是可选的,这意味着 00:00 不是 RFC 3339 定义的有效 partial-time,但 00:00:00 很好,因为是00:00:00.000:00:00.00000:00:00.0000 和其他变体。

    至于CONVERT 函数,108 样式符合规范,如果您不需要毫秒(或纳秒等),可以使用它。如果您想要毫秒,您可以使用样式 114 并将最后一个 : 替换为 . 或者您可以使用样式 121 或 126 并仅提取时间部分。如何提取它?好吧,CONVERT 会给你一个字符串,所以只需使用正确的参数将SUBSTRING 应用于它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 2012-10-28
      • 2020-06-04
      相关资源
      最近更新 更多