You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server中如何生成2023/01/24 15:21:54.967981100格式的时间?

解决方案:在SQL Server生成带9位小数的时间格式

要得到2023/01/24 15:21:54.967981100这种格式,需要注意两个关键点:SQL Server的时间精度限制,以及字符串拼接的正确方式。

核心说明

SQL Server中,datetime类型仅支持3位毫秒精度,datetime2类型最多支持7位。你要的9位小数,最后两位只能通过字符串补零实现,因为数据库本身不存储9位精度的时间值。

方法一:使用FORMAT函数(SQL Server 2012+)

FORMAT函数可以直接指定自定义格式,写法最简洁:

-- 如果modon是datetime类型,先转成datetime2(7)保留最大精度
SELECT FORMAT(CAST(modon AS datetime2(7)), 'yyyy/MM/dd HH:mm:ss.fffffff00') AS target_format_time
  • yyyy/MM/dd:生成2023/01/24格式的日期
  • HH:mm:ss.fffffff:生成带7位小数的时间部分
  • 末尾的00:补两位零,凑成9位小数

方法二:字符串拼接(兼容更早版本)

如果无法使用FORMAT,可以通过字符串拼接实现:

SELECT CONCAT(
    -- 生成日期部分:2023/01/24
    CONVERT(varchar(10), modon, 111),
    ' ',
    -- 生成带7位小数的时间部分:15:21:54.9679811
    CONVERT(varchar(12), CAST(modon AS datetime2(7)), 121),
    -- 补两位零到9位
    '00'
) AS target_format_time

你原代码的问题分析

之前代码得到2023/01/24 15:21:54.000,原因有两个:

  1. modon是datetime类型,仅支持3位毫秒精度,所以小数部分只能显示.000
  2. SUBSTRING(CONVERT(varchar(23), modon, 121), 11, 13)会取出带前置空格的时间(比如 15:21:54.000),导致日期和时间之间出现两个空格

内容的提问来源于stack exchange,提问作者Goutham mano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:02:47