日期比较问题求教
要做日期比较查询,数据库日期yymmdd hhss格式,如131203 0510,用了DateTime.ParseExact方法报错,不知道还有什么好方法做啦
,各位赐教,多谢
var obj = from fltdetail in db.cgs_fltdetail
where DateTime.ParseExact(("20" + fltdetail.schdepdt.Trim()), str, format) >= dateFrom &&
DateTime.ParseExact(("20" + fltdetail.schdepdt.Trim()), str, format) <= dateTo
select new fltdetail
{
id = fltdetail.id,
fltnr = fltdetail.fltnr,
soflseqnr=fltdetail.soflseqnr,
schdepdt=fltdetail.schdepdt
};
------解决方案--------------------"数据库日期yymmdd hhss格式"
数据库存放的日期只是数据,你捞取的时候才转换成某些特定格式显示.
目测,这个数据库表栏位设置的是char或者varchar ,然后弄这格式存放的,奇葩做法,浪费空间,也浪费每次都要转换的效能,
并且这样转换会死翘翘,资料失真了. 请问如何判断 131203 0510 一定是 2013/12/03 05:10 而不是 1913/12/03 05:10 ?
只能加特殊逻辑限定, 首两位 < XX的 前面加 20XX, 否则 加 19XX?
数据库日期栏位设计成这样,请让设计者买块豆腐撞死... ...
"不知道还有什么好方法做啦"
没啥好方法,请截取字符串拼凑.. ..
------解决方案--------------------
string input = "131203 0510";
DateTime result = DateTime.ParseExact(input, "yyMMdd hhmm", null);
------解决方案--------------------首先你要交待清楚你所谓的"LINQ" 是
LINQ2SQL 还是
LINQ2EF
where DateTime.ParseExact(("20" + fltdetail.schdepdt.Trim()), str, format) >= dateFrom
========
EF:
where EntityFunctions.DiffMinutes(EntityFunctions.TruncateTime(fltdetail.schdepdt), dateFrom) < 0
LINQ2SQL中,可尝试
SqlFunctions.DateDiff