首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于时间日期的有关问题

2013-02-24 
关于时间日期的问题要在数据库查一个时间段的数据,比如cDateXXX and cDatexxx我在程序里是这样写的://

关于时间日期的问题
要在数据库查一个时间段的数据,比如cDate>=XXX and cDate<=xxx

我在程序里是这样写的:


//查询上个月的数据
bgDate = dt.AddDays(1 - dt.Day).AddMonths(-1).ToString("yyyy-MM-dd:00:00:00");
edDate = dt.AddDays(1 - dt.Day).AddDays(-1).ToString("yyyy-MM-dd:23:59:59");
 
这样得出的数据是,bgDate =2013-01-01:00:00:00,edDate =2013-01-31:23:59:59

然后把这个两个值传给存储过程。然后存储过程拼出一个查询语句 cDate>=bgDate  and cDate<=edDate 


问题是,如果在数据库里,日期格式是yyyy/mm/dd那怎么办?难道我还要改程序?
然后针对不同的数据库,我都得把我的日期给改一下?
[解决办法]
存储过程中先把字符串转换为日期格式,比如SqlServer 的 Convert 就可以带日期格式字符串,类似于“yyyy-MM-dd”;别用默认的转换,否则有问题,尤其是比如英文版和中文版日期是不同的。
[解决办法]
传入参数,@data,然后datatime直接给参数复制,通过ado.net
[解决办法]
存储过程里先格式化成你要求的。
然后再作为条件去取/
[解决办法]
刚试了下,其实不用转也可以的,SQL SERVER已经帮你做了这部分的工作了,比如数据库的日期值是'2010-01-02',你用SQL=select * from tbtest where testdate='2010/01/02'一样可以查询出数据来
[解决办法]
介个不用刻意去转换吧?sql认识'2013-01-01 00:00:00'这种格式
[解决办法]
直接传入两个日期更好些吧,然后把你的查询条件改为下面这样:
cDate between bgDate  and edDate 
注:between后面的格式可能不对,记不清了,你可以查一下。

热点排行