datetime类型处理
小编最近遇到一个问题,用lambda表达式查询MySQL数据库中的datetime类型的数据。
数据库
前台,是日期时间控件,获取的时间到当天,需要模糊查询,这不是重点。
当数据库中的月份或者天数为1~9时,它就会自动的把前面的0去掉,而且,横杠也会自动转换为斜杠。
比如:2017-04-09 10:43:59,查询出来为2017/4/9 10:43:59
解决方法
前台获取控件中的日期时间,为字符串类型,传到后台的是字符串类型的日期时间:2017-04-09
先将字符串string类型,转换为指定格式的datetime类型,此时,2017-04-09就会变为2017/4/9 00:00:00
yyyy-M-d——1~9月份和日期,前面不加0。
yyyy-MM-dd——1~9月份和日期,前面加0。
然后,将日期时间类型再转换为string类型,使用截取字符串函数截取空格之前的字符串。
//使用Substring,截取日期
string strdate = strdatetime.Substring(0,strdatetime.IndexOf(" "));
或者
//使用split,截取日期
string strdate=strdatetime.Split(' ')[0];
最后,进行模糊查询即可。
代码
public List<t_mcoin> QueryRecordID(string UserID, string Date)
{
try
{
//string转换为datetime
DateTimeFormatInfo dtFormat = new System.Globalization.DateTimeFormatInfo();
dtFormat.ShortDatePattern = "yyyy-M-d";
DateTime datetime = Convert.ToDateTime(Date, dtFormat);
string strdatetime = datetime.ToString();
//使用Substring,截取日期
string strdate = strdatetime.Substring(0,strdatetime.IndexOf(" "));
//使用split,截取日期
string strdate=strdatetime.Split(' ')[0];
//引用上下文
excellentmcoinEntities DBcontext = new excellentmcoinEntities();
List<DayDetailsViewModel> QueryRecordID = new List<DayDetailsViewModel>();
//数据库中书写的格式,2017-04-05 10:41:26
//数据库中查询出来的格式,2017/4/5 10:41:26
var query = DBcontext.t_mcoin.ToList().Where(d => d.date.ToString().Contains(strdate) && d.userID == UserID).ToList();
//var query = DBcontext.t_mcoin.ToList();
return query;
}
catch (Exception e)
{
throw e;
}
}