sql - FORMAT([Time], 'hh:mm') 返回 NULL
问题描述
我有一个具有以下结构的日历表:
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
?
解决方案
从文档:
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
推荐阅读
- windows - 如何找出程序何时启动然后通过cmd批处理文件关闭,然后在程序关闭时创建一个rem
- python - 是否可以在不写入文件的情况下跟踪 Python 脚本运行了多少次?
- wpf - 如何获取 DataGridTextColumn 发件人的数据网格父级
- mobx - 处理 mobx 中的输入变化
- php - 刷新div后Popover停止工作?
- python - 使用 python 或 bash 在多行文件中查找和替换模式
- php - 使用 ajax 在循环中填充表单字段
- javascript - 字符串文字第一个还是第二个串联?
- c# - Unity 中的浮动文本
- ruby-on-rails - 使用简单的 for 选择并保存多个复选框