SQL显示不在DateTime格式的特定日期之间的数据库中的所有变量

时间:2015-08-17 11:40:55

标签: c# sql-server date datetime

我想在aspx网站上的特定日期之间显示我的数据库中的所有行和列。但是,日期不会以日期或日期时间格式记录。似乎无法将它们转换为日期格式。我试着这样做;

 public DataTable DisplayRecord()
        {
            var reqID = Request.QueryString["MyId"].ToString();

            //Date parsing

            String[] ids = reqID.Split('-');
            String date1 = ids[0];
            String date2 = ids[1];
            String provider = ids[2];

            SqlDataAdapter Adp = new SqlDataAdapter("SELECT * FROM flightLogs WHERE depDate_depTime=CONVERT(date,depDate_depTime,104) AND depDate_depTime BETWEEN CONVERT(date,'" + date1 + "',104)" +
                " AND CONVERT(date,'" + date2 + "',104)", connection);

            /*SqlDataAdapter Adp = new SqlDataAdapter("SELECT F.PNR, C.amount, F.provider, F.depDate_depTime FROM flightLogs F INNER JOIN companyLogs C ON F.PNR = C.PNR"+
                " WHERE F.depDate_depTime=CONVERT(date,F.depDate_depTime,104) AND F.depDate_depTime BETWEEN CONVERT(date,'" + date1 + "',104)" +
                " AND CONVERT(date,'" + date2 + "',104) AND F.provider='" + provider + "' ORDER BY F.depDate_depTime ASC", connection);*/
            DataTable Dt = new DataTable();
            Adp.Fill(Dt);
            FlightMonitor.DataSource = Dt;
            FlightMonitor.DataBind();
            return Dt;
        }

但是我得到了这个错误;

"从字符串转换日期和/或时间时转换失败。"

我的数据库中的数据也是这样显示的;

origin destination  deptDate_depTime        PNR    flightno   provider
KBP    AMS          18.09.2015 - 17:35:00   5RQZ43 PS712      Amadeus
ATH    FRA          10.07.2015 - 12:30:00   ZFY8XW PS716      PGS

1 个答案:

答案 0 :(得分:0)

如您所见,将日期时间值存储在varchar列中是一个坏主意。 如果您需要特定的格式,那么您应该在将该值显示给用户时进行转换。

但是为了让事情现在起作用,你可以改变你的where子句:

depDate_depTime=CONVERT(date,depDate_depTime,104)

到此:

depDate_depTime = convert(datetime, left(depDate_depTime, 10) + ' ' + right(depDate_depTime, 8), 104)