当前位置: 首页 > 面试题库 >

SQL Server DateTime和C#DateTime

席弘图
2023-03-14
问题内容

在我的SQL Server我有测试,其中只包含三行一个非常简单的表:
IDDateHoursvarcharDateTimevarchar)。

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(十天)会给我正确的数据库总小时数。

但是,当我写2012-01-102012-14-10(14天)我得到一个错误:

从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?


问题答案:

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

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

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

由于您将日期存储DateTimeSQL,因此没有充分的理由让我相信您将需要进行 任何 形式的解析。考虑下面的代码示例。

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.


 类似资料:
  • 我已经开始在win32上使用C。正如我们所知,C结构与类相同,但默认为公共成员等。。。现在我想要的是简单的C结构,它没有默认的构造函数、复制或移动操作或任何其他魔法。因为我想将其存储在文件中,还可以执行memcpy,用作字节数组等。。。所以我想用#ifdef u cplusplus在标题中定义它,如下所示。 但这只能防止函数名称的混乱。但如果在cpp文件中,struct仍然编译为cpp struc

  • 本文向大家介绍C和C ++中的循环,包括了C和C ++中的循环的使用技巧和注意事项,需要的朋友参考一下 在本教程中,我们将讨论一个程序,以了解C和C ++中的循环。 当我们不得不一次又一次地执行给定的块代码时,使用编程中的循环。它采用了一次又一次编写同一代码行的方法,并促进了DRY代码实践。 示例 对于循环 输出结果 While循环 输出结果

  • 本文向大家介绍C / C ++中的rand()和srand(),包括了C / C ++中的rand()和srand()的使用技巧和注意事项,需要的朋友参考一下 在本文中,我们将讨论C ++ STL的工作,语法以及示例和函数。 什么啊 rand()函数是C ++ STL中的内置函数,在<cstdlib>头文件中定义。用于生成一系列随机数。当我们想在代码中生成随机数时,可以使用此函数。 就像我们在C

  • C++编程规范 C/C++编程规范 C/C++编程规范--北京软通动力信息技术有限公司 高质量C/C++编程规范指南 C语言编程规范--华为技术有限公司 Google C++ 编程规范 C++编程规范:101条规则、准则与最佳实践 PDF扫描版.pdf C++ 编程规范专栏

  • 问题内容: 有没有人使用Hudson作为使用UnitTest ++作为测试库的C ++项目的Continuous-Integration服务器? 您是如何设置的? 我知道以前有关持续集成的问题很多,但我希望这个问题范围较窄。 编辑:我会澄清一下我要寻找的东西。我已经将构建设置为在单元测试失败时失败。我正在寻找类似Hudson的JUnit支持的东西。UnitTest ++可以创建XML报告(请参阅此

  • 问题内容: 我正在使用C#HttpWebRequest来获取网页的一些数据。问题是在页面加载后,使用javascript / ajax更新了某些数据,但我没有在响应字符串中获取它。有没有办法让webrequest等待页面中的所有脚本执行完毕? 谢谢 阿米特 问题答案: 如果我正确解释了您的问题,那么您的问题就没有简单的解决方案。 您正在从服务器上抓取HTML,并且由于C#代码不是真正的Web浏览器