我有一個選擇使用WHERE子句中的兩個datetimepickers中的datetime。在SELECT運行良好,填充一個DataGrid,沒有問題,但bizzarely的SELECT的日期時間部分被完全忽略,「WHERE x_account_id =」 + subaccountID被僱用整件事返回記錄好像只有:SQL Server CE和日期時間選擇問題(C#)
SqlCeConnection conn = new SqlCeConnection(Lib.ConnectionString);
string sql = "SELECT x_scaleid, x_weight, x_timestamp FROM x WHERE x_account_id = " + subaccountID
+ " AND (x_timestamp BETWEEN @start_date AND @end_date) ORDER BY x_timestamp DESC";
SqlCeCommand cmd = new SqlCeCommand(sql, conn);
cmd.Parameters.Add("@start_date", SqlDbType.DateTime, 8).Value = dFromFilter.Value.Date;
cmd.Parameters.Add("@end_date", SqlDbType.DateTime, 8).Value = dToFilter.Value.Date;
SqlCeDataAdapter da = new SqlCeDataAdapter();
da.SelectCommand = cmd;
無法在網上找到任何具有相同問題的人,所以我有點卡住了。也許我最好將所有日期時間轉換爲int,並以這種方式存儲它們 - 總是討厭使用datetime類型。
在任何人問起之前,我已經嘗試過各種版本的條款,包括使用'<'和'>'以及不同的CONVERT變體。
您是否使用任何類似工具的分析器來檢查在數據庫中收到的查詢。可能有時,dFromFiler或dToFilter可能具有'DateTime'最小值或最大值。 – Saravanan 2013-05-05 09:00:30
我已經使用SQL Server Compact Tool直接運行查詢,並且dFromFiler和dToFilter都有最寬的最大和最小日期範圍。我自己的直覺是它是一個格式問題 - 日期時間的數據庫格式和C#發送的數據有所不同。 – Gaddo 2013-05-05 09:54:16
在這種情況下,嘗試將日期時間格式化爲字符串,並使用任何SQL Server代碼(如101,103)格式化SQL的datetime – Saravanan 2013-05-05 09:58:03