SQL Server中的列日期格式错误

r9s*_*r9s 0 c# sql-server datetime

我正在将我的C#程序中的一些数据插入到SQL Server 2012中.我的表中的列是datetime类型的列.我的C#代码:

string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
// returns 2016-04-11 11:47:05.535
Run Code Online (Sandbox Code Playgroud)

当我调试我的应用程序时,我可以看到日期格式正确(与上面相同).但是当我查看我的数据库时,这个日期是:

2016-11-04 11:47:05.537
Run Code Online (Sandbox Code Playgroud)

月和日交换.为什么会这样?

Son*_*nül 6

选择错误的数据类型时,你有一个坏习惯.

永远不应该DateTime使用字符串表示形式存储您的值.SQL Server的datetime类型在.NET Framework端映射 System.DateTime.这就是为什么你应该直接参数化查询插入你的DateTime.Now值.

但请注意案件反对DateTime.Now.

另一方面,让我们分析你的例子..

2016-04-11 11:47:05.535
2016-11-04 11:47:05.537
Run Code Online (Sandbox Code Playgroud)

忽略 datetime类型将全面毫秒部分.000,.003或者.007,我们可以100%肯定,这些价值观是完全相同一样基于只是它们的表示?

不,我们不能.

这些表示取决于sql server的排序规则和文化设置.这就是为什么你的2016-11-04 11:47:05.537 力量,甚至是4月4日的不是11月11日的.