繁体   English   中英

SQL Server DateTime和C#DateTime

[英]SQL server DateTime and C# DateTime

在我的SQL Server上,我有一个非常简单的表进行测试,该表仅包含三行: IDDateHours 。( varcharDateTimevarchar )。

SQL中的DateTime格式类似于: yyyy-MM-dd HH:mm:ss.fff

C#中的DateTime格式类似于: yyyy-dd-MM HH:mm:ss.fff

我使用以下代码获取C#DateTime格式:

 string ddd = "2012-10-10 00:00:00.000";
 dt1 = DateTime.ParseExact(ddd, "yyyy-MM-dd HH:mm:ss.fff", null);

如果尝试将其放入yyyy-dd-MM则会收到错误消息:

日历不支持由字符串表示的DateTime。

在我的C#应用​​程序中,我正在尝试查找破损日期之间的总小时数。 我有点想工作了,但它只适用于01到12之间的日期。

因此,像从2012-01-102012-10-10 (TEN天)会给我从数据库总学时的正确的金额。

但是,当我将2012-01-10写入2012-14-10 (十四天)时,出现错误:

从char数据类型转换为datetime数据类型导致超出范围”

先感谢您。

PS。 您能建议一种更简单的日期获取方式吗?

MySQL查询

string CommandText = "SELECT * FROM date_test WHERE id = '4' AND date BETWEEN '" + dt1 + "' AND '" + dt2 + "'";

我已经解决了问题,但没有解决方案。

问题在于SQL数据库查看格式,并要求yyyy-MM-dd,但是C#只能发送yyyy-dd-MM。

为什么ParseExact()无法做yyyy-MM-dd?

您正在为SQL注入做好准备。
也看这里 有一个参数化查询的示例。

日历不支持由字符串表示的DateTime。

之所以出现此错误,是因为您的C#应用​​程序将日期2012-14-10视为第14th个月, 10th天和10th 2012th year 白天和一年的工作都可以找到,但是月份却找不到。 此外,不要尝试更改C#应用程序如何查看日期,这是基于系统的文化。

您对如何定义 DateTime对象以及如何显示它感到困惑。

由于您将日期存储为SQL中的DateTime ,因此我没有充分的理由相信您需要进行任何类型的解析。 考虑下面的代码示例。

var dataTable = new DataTable();
var dataAdapter = new SqlDataAdapter("SELECT * FROM YourTable", "{connection string}");

dataAdapter.Fill(dataTable);

var yourDate = dataTable.Rows[0]["Date"]; <=== the type will be DateTime, simple.

添加参数

让我们以示例查询为例:

“ SELECT * FROM date_test WHERE id ='4'AND日期介于'” + dt1 +“'AND'” + dt2 +“'”;

让我们对其进行修复,请考虑以下示例:

var dataTable = new DataTable();
var dataAdapter = new SqlDataAdapter("SELECT * FROM date_test WHERE id = @ID AND date BETWEEN @StartDate AND @EndDate", "{connection string}");

dataAdapter.SelectCommand.Parameters.AddWithValue("@ID", "4");
dataAdapter.SelectCommand.Parameters.AddWithValue("@StartDate", new DateTime(2012, 10, 1));
dataAdapter.SelectCommand.Parameters.AddWithValue("@EndDate", new DateTime(2012, 10, 14));

dataAdapter.Fill(dataTable);

var yourDate = dataTable.Rows[0]["Date"]; <=== the type will be DateTime, simple.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM