![](/img/trans.png)
[英]Dapper Read SqlHierachyId Column (SQL Server 2008 R2)
[英]Select datetime column from SQL Server 2008 R2 table
我在SQL Server 2008 R2數據庫的表上有一個DateTime
列。 我的c#前端正在此表中插入帶有datetime參數的行。
DateTime T = DateTime.Now;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "cargridsnapshot";
cmd.Parameters.AddWithValue("@t", T);
cmd.ExecuteNonQuery();
表格行中的datetime列是這樣的:
2013-09-04 16:21:23.450
但
select * from table
where TIMECOLUMN = '2013-09-04 16:21:23.450'
沒有返回結果。
SQL Server僅將時間存儲到大約1/300秒,您可能正在使用無法用可用位准確表示的值。
編輯
您可以使用以下代碼檢查此行為:
select CONVERT(DATETIME, '2013-09-04 16:21:23.450') -- returns 2013-09-04 16:21:23.450
select CONVERT(DATETIME, '2013-09-04 16:21:23.451') -- returns 2013-09-04 16:21:23.450
select CONVERT(DATETIME, '2013-09-04 16:21:23.452') -- returns 2013-09-04 16:21:23.453
select CONVERT(DATETIME, '2013-09-04 16:21:23.453') -- returns 2013-09-04 16:21:23.453
select CONVERT(DATETIME, '2013-09-04 16:21:23.454') -- returns 2013-09-04 16:21:23.453
select CONVERT(DATETIME, '2013-09-04 16:21:23.455') -- returns 2013-09-04 16:21:23.457
底線
不要試圖用日期時間來標識行...
如果使用這個怎么辦
Select * from table where convert(date,yourcolumn)=convert(date,your_datetime)
但請注意,它將僅按日期進行比較
在將字符串與數據庫值進行比較時,SQL Server可以通過多種方式表示日期時間。 有些在一天的前一天,有些在一天的前一天。 SQL Server的本地化導致了您的問題; 您可以在此處了解更多信息。 具體來說,尋找SET DATEFORMAT
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.