【问题标题】:C# Datetime Issue to SqlC# 日期时间问题到 Sql
【发布时间】:2017-01-23 09:15:48
【问题描述】:

我正在研究 C# SQL。

我有一个日期时间值"1/10/2016 12:00:00 AM" 例如

Datetime dt="1/10/2016 12:00:00 AM"

当我将此值作为参数传递给 SQL 存储过程时,它变为10 Jan 2016

我需要 SQL 中 1 OCT 2016 的结果。 Sql存储过程参数数据类型为datetime。

非常感谢

【问题讨论】:

  • 你能显示代码吗?您如何将其存储在 dt 中以及 SQLParameter 的样子
  • 听起来你将它作为字符串传递,你应该将它作为日期时间传递
  • 请看一下这个question
  • 如果作为字符串传递,请将其格式化为yyyy-MM-dd HH:mm:ss 以确保其被正确解释。如果您的数据库语言是en-US 而不是en-GB,则以dd/MM/... 发送可以很容易地解释为“MM/dd/...”。另一个选项是设置您的数据库语言;但我更喜欢第一种方法,因为无论如何它都有效。

标签: c# sql asp.net-mvc-4


【解决方案1】:

更改日期时间值,看看发生了什么。如果仍然在 2016 年 1 月 10 日到来,那么可能是存储过程采用默认值的变化,即存储值为 2016 年 1 月 10 日。

【讨论】:

  • 我认识 Zohar Peled。但是根据 stackoverflow 规则,如果我们的声誉低于 50,我们将无法发表评论。所以对于这个限制,我想作为答案而不是评论。
【解决方案2】:

使用参数将值传递给 sql 查询。或者使用myDateTime.ToString("s"); this 作为日期时间值

"s" - 标准日期时间格式

【讨论】:

    【解决方案3】:

    那么,您确定 c# 中的值实际上是 1 OCT 2016 而不是 10 Jan 2016
    行:

    Datetime dt = "1/10/2016 12:00:00 AM";
    

    甚至不编译。

    在 c# 和 Sql Server 之间传递 DateTime 值的最佳做法是使用 DateTimeDateTime2 类型的 sql 参数并传递 DateTime 结构的实例。
    如果您这样做,则可以保证 DateTime 值正确传递。

    【讨论】:

      猜你喜欢
      • 2011-11-21
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-06
      • 2011-07-23
      • 2013-04-01
      • 1970-01-01
      相关资源
      最近更新 更多