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

如何在C#中获取SQL datetime列的日期时间格式?

解决SQL datetime列格式与C#变量转换的问题

首先要明确:SQL Server的datetime/datetime2等日期类型是以二进制形式存储的,并不存在固定的字符串格式。你在SSMS等工具中看到的日期字符串,是客户端根据自身设置(比如语言、区域)渲染出来的结果,而非SQL列本身的“格式”。

常见解决方案

1. 直接使用通用格式字符串匹配SQL显示效果

如果只是想让C#变量转换后的字符串和SSMS默认显示的格式一致,直接用以下格式字符串即可:

// 匹配SQL datetime的默认显示格式(yyyy-MM-dd HH:mm:ss.fff)
string sqlStyleString = yourDateTime.ToString("yyyy-MM-dd HH:mm:ss.fff");

// 如果是datetime2类型,精度更高,可用:
string sqlStyleString2 = yourDateTime.ToString("yyyy-MM-dd HH:mm:ss.fffffff");

2. 强类型交互(推荐)

避免字符串格式化带来的错误,直接用强类型在C#和SQL之间传递数据:

  • 从SQL读取到C#:
// 使用SqlDataReader的强类型方法
DateTime sqlDateTime = reader.GetDateTime(reader.GetOrdinal("YourDateTimeColumn"));

// EF/EF Core中直接映射为DateTime属性
public DateTime YourDateTimeProperty { get; set; }
  • 从C#写入SQL:
// 使用参数化查询,避免格式问题和SQL注入
command.Parameters.Add("@DateParam", SqlDbType.DateTime).Value = yourDateTimeVariable;

3. 获取数据库端的默认格式(特殊场景)

如果需要匹配数据库语言设置对应的默认格式,可以先查询数据库的语言配置,再对应C#的格式字符串:

-- 查询数据库默认语言
SELECT @@LANGUAGE;

比如语言是us_english,默认格式对应yyyy-MM-dd HH:mm:ss;如果是简体中文,默认可能是yyyy-MM-dd HH:mm:ss或yyyy年MM月dd日,之后在C#中使用对应的格式字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 17:20:33