将日期解析为dd-MMM-yy

时间:2013-08-27 10:53:55

标签: c# ms-access-2007

...好友

在我的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);

2 个答案:

答案 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 + "#..

Custom Date and Time Formats:MSDN