DateTime.Now 赋值给 DateTime 的变量,产生的sql语句时间格式突然变成7位毫秒了

lorinzhang 2012-09-14 09:24:35
首先,我程序中有很多地方都是用的DateTime.Now 赋值给 DateTime 变量如下
entity.CreateDate =DateTime.Now;

之前完全正常,sql 产生的 时间 2012-09-14 09:19:07.110

但是现在产生的sql竟然产生了 7位 毫秒 2012-09-14 09:19:07.1100000 结果sql执行失败

现在所有用 DateTime.Now 的地方,产生的sql就是 7位 毫秒,所以都失败,在同事机器也试过了,结论是没获取代码之前时正常的产生3位,获取之后 产生7位 ! 但是更改的都是代码,怎么会对这个格式有影响的,再说也不知道是哪个改动影响了它


环境:xp系统 ,framework 4.0(之前也是),sqlserver 2005 之前也是, 字段的数据类型,变量的数据类型检查了没变过都是 datetime的

我想知道的:1--是什么原因导致了这种情况?2--在哪里有配置的关系吗还是和我当前的系统设置有关系(没设置啥啊)?
求助,谢谢
...全文
486 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
ylf102 2013-04-03
  • 打赏
  • 举报
回复
我今天也遇到相同的问题了。郁闷至极啊,之前还好好的代码,今天忽然发现操作数据库异常了。 错误提示是:从数据类型 varchar 转换为 datetime 时出错。 我估计是不是更新了framework 4的原因啊。我机器其他什么都没有动过。 有哪位高手知道原因的,给指点一下呀。
lorinzhang 2012-09-18
  • 打赏
  • 举报
回复
仍然然没有找到原因,但发布到 服务器上就没问题了,之前在本机时可以的,实在是不知道原因,改代码和格式我觉得是不正确的,因为之前都这么用的正常!到底什么原因呢?
haojuntu 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

如果是网站,那么你需要做的就是保证服务器上本地化日期格式的正确性就可以了,以便能够入库成功

如果是C/S架构的,需要安装在客户端的,我想你并不能保证所有用户本地化日期的格式,所以就需要入库前对日期统一格式化

昨天也是有人提出如此的问题,不过他的本地化日期格式是 2012‎年‎9‎月‎12‎日 ‎星期三 11:02:23
这种,很明显不能正常的添加入库,因此我认为如果你不能保证入库……
[/Quote]

嗯,我觉得还有有地方设置了,
DateTime dt = DateTime.Now;
string time1 = dt.ToString("yyyy-MM-dd hh:mm:ss fff");
string time = dt.ToString("yyyy-MM-dd hh:mm:ss fffffff");
csdn现在好像有Bug,回复了内容不显示。
lorinzhang 2012-09-14
  • 打赏
  • 举报
回复
再等等。。。。。。。。。。。。
lorinzhang 2012-09-14
  • 打赏
  • 举报
回复
没有人修改过与 DateTime格式相关的地方!并且我是给 datetime的变量赋值啊! 原因呢原因呢?郁闷啊
  • 打赏
  • 举报
回复
如果是网站,那么你需要做的就是保证服务器上本地化日期格式的正确性就可以了,以便能够入库成功

如果是C/S架构的,需要安装在客户端的,我想你并不能保证所有用户本地化日期的格式,所以就需要入库前对日期统一格式化

昨天也是有人提出如此的问题,不过他的本地化日期格式是 2012‎年‎9‎月‎12‎日 ‎星期三 11:02:23
这种,很明显不能正常的添加入库,因此我认为如果你不能保证入库时候日期的正确性,最好统一一下格式后在入库
RufusLi 2012-09-14
  • 打赏
  • 举报
回复
要么你格式化一下那个日期的格式就可以了
RufusLi 2012-09-14
  • 打赏
  • 举报
回复
要么你格式化一下那个日期的格式就可以了
haojuntu 2012-09-14
  • 打赏
  • 举报
回复
我觉得还是你的项目做修改造成的,或许别人更改的你不知道,你可以搜索一下
DateTime dt = DateTime.Now;
string time1 = dt.ToString("yyyy-MM-dd hh:mm:ss fff");
string time = dt.ToString("yyyy-MM-dd hh:mm:ss fffffff");
haojuntu 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

原因不清楚,不过你可以在入库之前将时间格式化一下
C# code
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");


以字符串的形式提交入库,本身SQL的时间类型就可以接受字符串,应该不会出现问题




首先,我程序中有很多地方都是用的DateTime.Now 赋值给 D……
[/Quote]



我觉得还是你的项目做修改造成的,或许别人更改的你不知道,你可以搜索一下
DateTime dt = DateTime.Now;
string time1 = dt.ToString("yyyy-MM-dd hh:mm:ss fff");
string time = dt.ToString("yyyy-MM-dd hh:mm:ss fffffff");
haojuntu 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

原因不清楚,不过你可以在入库之前将时间格式化一下
C# code
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");


以字符串的形式提交入库,本身SQL的时间类型就可以接受字符串,应该不会出现问题


首先,我程序中有很多地方都是用的DateTime.Now 赋值给 D……
[/Quote]


这觉得还是你的项目哪个地方进行修改了,或是别人更改了你不知道,你可以搜索一下,
DateTime dt = DateTime.Now;
string time1 = dt.ToString("yyyy-MM-dd hh:mm:ss fff");
string time = dt.ToString("yyyy-MM-dd hh:mm:ss fffffff");
lorinzhang 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

原因不清楚,不过你可以在入库之前将时间格式化一下
C# code
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");


以字符串的形式提交入库,本身SQL的时间类型就可以接受字符串,应该不会出现问题
[/Quote]

首先,我程序中有很多地方都是用的DateTime.Now 赋值给 DateTime 变量

所以我觉得不应该使用这种方式去修改,谢谢
  • 打赏
  • 举报
回复
原因不清楚,不过你可以在入库之前将时间格式化一下
string date = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");


以字符串的形式提交入库,本身SQL的时间类型就可以接受字符串,应该不会出现问题
lorinzhang 2012-09-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

看一上控制面板区域时间设计。

一般都3位的啊。能精确到7位?
[/Quote]
你好,控制面板中的时间格式 H:mm:ss ,没问题啊,关键是 同事的机器也产生7 位了,哪里的问题呢。。。。
SQL77 2012-09-14
  • 打赏
  • 举报
回复
看一上控制面板区域时间设计。

一般都3位的啊。能精确到7位?
Alex_Kael 2012-09-14
  • 打赏
  • 举报
回复
= DateTime.Now.Date.ToShortDateString();

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧