-1
我面臨這種轉換失敗。我想在日曆中選取所有選定的日期,並在選定的日期顯示活動。我能夠獲得選定的日期,但是當我嘗試將開始日期=選定日期時。它在下面的錯誤失敗。從字符串中轉換日期和/或時間時轉換失敗。在sql
附加信息:從字符串中轉換日期和/或時間時轉換失敗。
strSQL = " SELECT CalendarID, Company,Header, convert(date,enddate,103)StartDate, convert(varchar,enddate,103) enddate, (starthour + ' : ' + startmin + ' : ' + startday) starttime, (endhour + ' : '+ endmin+ ' : '+ endday) endtime " & _
"FROM tablename where StartDate ='" & calendar1.SelectedDate.ToShortDateString() & "'"
我必須試着改變代碼到這一點,但也具有同樣的錯誤
Dim selecteddates As Date
selecteddates = calendar1.SelectedDate.ToShortDateString()
strSQL = " SELECT CalendarID, Company,Header, convert(date,enddate,103)StartDate, convert(date,enddate,103) enddate, (starthour + ' : ' + startmin + ' : ' + startday) starttime, (endhour + ' : '+ endmin+ ' : '+ endday) endtime " & _
"FROM tablename where StartDate =CAST('" & selecteddates & "' AS DATE) "
這是一種糟糕的編碼方式。不要在sql查詢中進行連接。它很脆弱。我建議你使用參數化查詢 – Sankar
爲了增加Sankar的話,通過切換到使用參數,你也可以在這裏受益,因爲ADO.Net已經知道如何將.NET的'DateTime'轉換爲SQL Server的'datetime'(或'datetime2 '等)數據類型,因此您不必將日期呈現爲*字符串*,因此您可以消除格式問題。 –