2011-03-28 101 views
2

基本上,我有一個SQL表中的日期列表,每個列表旁邊有一些統計信息。我想比較表中的日期和我選擇的某個日期。但是,我的表中的日期存儲爲Varchar(50)(並且必須是)。顯然,我可以將表中的日期轉換爲日期類型,但我不知道。有誰知道如何?我現在的代碼可以在下面看到。vb.net SQL檢查日期

If Chosen = "Today" Then 
     DateStop = Today.AddDays(-1) 
     Dim objCmd As New SqlCommand("SELECT COUNT(*) FROM Stats where (Date > " & DateStop & ")", objConn) 
     MessageBox.Show("SELECT COUNT(*) FROM Stats where (Date > " & DateStop.Date & ")") 
     ObjDataReader = objCmd.ExecuteReader 
     test = ObjDataReader(0) 
     MessageBox.Show(test) 
    End If 

在此先感謝。

編輯:當我知道在我嘗試的那天前後我的表格中肯定存在日期時,我總是收到沒有數據存在的錯誤。

+0

試試這個「SELECT COUNT(*)FROM統計,其中(轉換(日期時間,日期,101)>「&DateStop&」)「 – Mitul 2011-03-28 14:55:58

+0

@Mitul - 我試過,謝謝,但仍然得到相同的錯誤。 – Coolmurr 2011-03-28 15:05:08

+0

如果你在後端運行你的sql,它可能更容易調試。我的猜測是你的格式化日期的方式有問題,這就是爲什麼你沒有得到任何結果。 – Beth 2011-03-28 15:23:14

回答

0

轉換,我認爲你錯過了什麼是objCmd.Read()。或者您可以使用objCmd.ExecuteScalar()而不是objCmd.ExecuteReader()

ObjDataReader = objCmd.ExecuteReader 
ObjDataReader.Read() 
test = ObjDataReader(0) 
MessageBox.Show(test) 

或者......

test = objCmd.ExecuteScalar() 
MessageBox.Show(test) 

(您可能仍然還需要投或轉換功能的其他建議。)

+0

謝謝,這是問題,不敢相信我忽略了它!仍在處理我的日期轉換。 – Coolmurr 2011-03-28 22:00:44

0
Select Count(*) From Stats where (CAST(Date as DateTime) > " & DateStop & ")" 

使用,對您的查詢

+0

謝謝你給我一個例子。不幸的是,這仍然會導致沒有數據存在的錯誤。 – Coolmurr 2011-03-28 14:57:39

0

首先,可以使用存儲過程?

如果你這樣做,你可以創建你所需要的代碼,SP和SP你的開頭添加下面的命令

 
set dateformat 'ymd'; 

我用「年月日」,但也可以使用其他格式了。

如果你可以不看T-SQL函數CONVERT

0

您將需要Convert命令。

例如,將一個字符串從ISO 8601標準

WHERE Date > CONVERT(datetime, '2006-04-25T15:50:59.997', 126)