2013-10-17 215 views
0
Dim data1 As String 
Dim conn1 As SqlConnection 
Dim cmd1 As New SqlCommand 
Dim ada1 As New SqlDataAdapter() 
Dim ds1 As New DataSet 

data1 = lbldmdate.Text.ToString() 
conn1 = New SqlConnection("Persist Security Info=false;User Id=justin;Data Source=ARULJUSTIN\SQLEXPRESS;Initial Catalog=firemaintain;Integrated Security=True;Pooling=False") 
conn1.Open() 
ada1 = New SqlDataAdapter("select Recordno, uhnumber,uhbuilding,uhlocation from hydrantmaintain WHERE unndate= '" & Today.ToString("dd/mm/yyyy") & "'", conn) 

ada1.Fill(ds1) 
dgnxtmdates.DataSource = ds1.Tables(0) 

我得到一個錯誤:「不能轉換從日期字符串」日期字符串轉換

+0

當你得到這個錯誤嗎?編譯時間?運行?如果是從'ToString'函數(我不這麼認爲)或Ado.NET組件?還是從數據庫?哪條線?您的問題可能會因此級別的信息而關閉。 – nawfal

+0

我得到一個編譯時錯誤sql異常「轉換日期和/或時間從字符串轉換失敗」 – Justin

+0

賈斯汀,這是運行時異常,不編譯時間.. – nawfal

回答

0

正如@Nawful指出的那樣,你使用的是「mm」(分鐘)而不是「MM」(月),但它看起來像你的月和日相反。現在,這取決於日期和您所在區域設置具體情況,你如何配置SQL服務器,但要避免這些問題,我喜歡的日期做到這一點:

CONVERT(datetime, '" & Format(Value, "yyyy-MM-dd") & " 00:00:00', 102) 

這對於日期和時間:

CONVERT(datetime, '" & Format(Value, "yyyy-MM-ddTHH:mm:ss") & "', 126) 

請注意,Value是日期或日期時間數據類型。

在您的例子,這將是這樣的:

ada1 = New SqlDataAdapter("select Recordno, uhnumber,uhbuilding,uhlocation from hydrantmaintain WHERE unndate= CONVERT(datetime, '" & Format(Today, "yyyy-MM-dd") & " 00:00:00', 102)", conn) 
0

很難指出,但你的字符串格式化應該是dd/MM/yymm對應於分鐘組件。

Today.ToString("dd/MM/yyyy"); 
0

如果unndate是在數據庫中datetime數據類型,你不需要查詢數據庫時Today轉換爲字符串。

原因,Today已經是DateTime

但是,如果unndate是一個字符串數據類型,爲varchar或nvarchar例如,我唯一的建議是,如果你想查詢一樣,使用的數據類型datetime爲unndate價值擺在首位。

+0

undate是數據庫中的日期數據類型。當試圖用select語句填充數據集時,我得到一個錯誤錯誤sql異常「轉換日期和/或時間從字符串轉換失敗」 – Justin

+0

@Justin - 如果unndate是數據庫中的日期數據類型,則爲Ye Mon指出,你不需要調用ToString,並且你的查詢不應該在日期時間值周圍包含單引號。 –