【问题标题】:Trouble converting DateTime (.net) to datetime (SQL server)将 DateTime (.net) 转换为 datetime (SQL server) 时遇到问题
【发布时间】:2014-02-20 13:26:10
【问题描述】:

我正在尝试将字符串(来自文本文件) - '17/07/99' 传递到 sql server 表中 - 目标是日期列。 插入在一个字符串中,格式为:

Dim cmd As New SqlCommand(...yada...) 
cmd.CommandText = "INSERT INTO my.table (thisDate, ...etc... ) VALUES (@myDate, ...etc...)"

我将参数添加到 cmd 使用:

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = Date.ParseExact("11/11/11", "dd/MM/yy", CultureInfo("en-GB"))

当我来到ExecuteNonQuery

我收到cannot convert string to datetime 错误。 我以为 ParseExact 是在进行从字符串到 DateTime 的转换??

我真的需要在 sql 中进行 CONVERT 以及使用日期时间结构吗?!

【问题讨论】:

  • 我应该补充一点,我一直在使用 .Value = CType("11/11/11", DateTime)

标签: vb.net parameters .net-4.0 sql-server-2012 sqlcommand


【解决方案1】:

试试这个:

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = new DateTime(2011, 11, 11);

还看到这个:

http://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx

【讨论】:

  • 相同 - 无法从字符串转换为日期时间。我正在重新配置代码以尝试以稍微不同的方式处理传入的数据。我打算使用整数来保存文件中的年/月/日,然后使用新的日期时间(年、月、日)推送它们。
  • 已解决!这是一个有效的方法 - 问题是方向盘后面的白痴......;)当我向 sqldbtype.datetime 传递一串颜色名称时,另一个参数已设置(不知何故)!
  • 太棒了!祝你有美好的一天!
【解决方案2】:

刚刚对此进行了测试,它可以工作......您只需要格式化您的日期,如果您希望它保持一致,无论您的操作系统是什么文化,否则您不必这样做

你可以这样用

Dim d As Date = "17/07/99"

或者你可以使用这种方式

Dim d As Date = "17.07.99"

如果你只有没有时间的日期,那么你使用什么都没关系 你可以使用这个

cmd.Parameters.Add("@myDate", SqlDbType.DateTime).Value = d

或者这个

cmd.Parameters.Add("@myDate", SqlDbType.Date).Value = d

我只是尝试了两个版本的混合,没有任何错误并且插入了行

【讨论】:

  • 确实是这个问题——我第一次写的测试版本在我的机器上运行良好,但是当我转移到实时服务器时,它坏了——服务器似乎是使用美国日期格式设置的,导致问题。
【解决方案3】:

在添加之前尝试格式化字符串。

Format(YourTimeStringHere, dd-MM-yy)

【讨论】:

  • 不鼓励使用旧版 VB Format 函数。请改用String.Format
猜你喜欢
  • 2020-03-04
  • 1970-01-01
  • 2017-02-07
  • 2011-11-15
  • 2019-09-02
  • 2013-11-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
相关资源
最近更新 更多