...好友
在我的ms访问数据库中,我存储日期格式dd-MMM-yy。 并在搜索查询中将日期作为参数传递。 但我的系统cantain日期格式mm / dd / yyyy 那么,在将此日期传递给查询之前,如何在dd-MMM-yy中转换此格式 现在,我正在使用folling代码..但是给出错误....字符串未被识别为有效的DateTime。
DateTime dt = DateTime.ParseExact(startdate.ToString(), "dd-MMM-yy",
CultureInfo.InvariantCulture);//startdate is datepicker
...查询
s = new OleDbDataAdapter("
SELECT opd_patient_master.*, patient_operation.*
FROM opd_patient_master, patient_operation
WHERE opd_patient_master.pid= patient_operation.pid
and opd_patient_master.rdid= patient_operation.rdid
and odate >= #" + startdate + "# and odate<=# " + enddate + "#
and operation= '" + oprtype + "'", mycon);
答案 0 :(得分:2)
使用参数,您无需转换为字符串
using (var cmd = new OleDbCommand("SELECT opd_patient_master.*, patient_operation.* FROM opd_patient_master, patient_operation where opd_patient_master.pid= patient_operation.pid and opd_patient_master.rdid= patient_operation.rdid and odate >= ? and odate<= ? and operation= ?", mycon))
{
cmd.Parameters.AddWithValue("@startdate", startDateTimePicker.Value); // use DateTime input here as startdate
cmd.Parameters.AddWithValue("@enddate", endDateTimePicker.Value); // use DateTime input here as enddate
cmd.Parameters.AddWithValue("@oprtype", oprtype);
using (OleDbDataAdapter s = new OleDbDataAdapter(cmd))
{
// do something with adapter
}
}
请注意,您可以直接从日期时间选择器控件中获取所选的DateTime
值。使用DateTimePicker.Value
属性
答案 1 :(得分:0)
使用parameter queries是更好的选择,然后将处理这些格式问题。
对于当前的方法,解决方案是使用标准的ISO日期格式YYYY-MM-DD,将日期作为字符串传递:
string sStartDate = startdate.Value.ToString("yyyy-MM-dd");
".. and odate >= #" + sStartDate + "#..