![](/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.