日期:2014-05-17  浏览次数:20960 次

C#时间格式
C#时间格式转换成SQL语句时 经常是根据本机里控制面板里设置的格式来转变的
这种情况下,就有一个问题,如果客户端在不同时间格式下运行,再去与SQL里的时间字段做比较就会出问题,
有什么办法,可以来解决这种与具体机器时间格式无关性问题。

如:***.time >'2013/12/10 星期二 10:55:01' 
从字符串转换日期和/或时间时,转换失败。

------解决方案--------------------
没有其他办法,只有在程序对比的时候转换当前时间,或则在SQL对比的时候转换参数。
如果是web的话,设置下服务器时间格式就行,客户端,只能手工转换
------解决方案--------------------
引用:
各位还是没看清我的要求,
shiyong7682719:你这种去掉,我直接toString就搞定
bf6543:我本来就是DateTime,现在是DATETIME转字符串,根据本机控制面板里的设置转字符串里,会转成不同的格式。
我的要求:1.不能每碰到一个时间,我都要求手工的去ToString("yyyy-MM-dd HH:mm:ss.fff") , 
        2.当然如果实在没有办法,那也就只能ToString("yyyy-MM-dd HH:mm:ss.fff") , 但是另一个问题是SQL默认的时间格式是可变,还是不变的呢?
     


楼主要理解两个关键点:
1. 时间类型的变量是没有格式的,包括数据库中的存储date类型的字段。
2. 只有时间类型转换为字符串时才需要指定格式。

楼主遇到的格式不一致的问题,得看数据库中你的存储的列的类型是date还string。
1. date类型:不需要转换,直接把程序中的datetime变量做为参数传入sql中就可以了。
2. string类型:那么要数据库设计时必定要为该字段指定时间的格式化方式,程序的中datetime也按这个格式转换就可以了。