c# - 从字符串转换日期和/或时间时 SQL Server 转换失败
问题描述
我得到了 ac# 代码,它应该将记录插入到表中,其中一些列是日期时间。
我从一个文件中获取列名和值,其中所有内容都经过硬编码,如下所示:
"Columns": ["column1", "column2"],
"Data": ["Val1", "Val2"]
我正在使用文件中的数据创建一个 INSERT 查询。
问题是,由于文件中的所有内容都被硬编码为字符串,所以我不知道应该何时使用DateTime.Parse
才能将字符串转换为DateTime
. 例如,我应该这样做command.Parameters.AddWithValue(parameters[i], singleValues[i]);
还是应该这样做command.Parameters.AddWithValue(parameters[i], DateTime.Parse(singleValues[i]));
有什么方法可以避免检查参数的硬编码名称吗?日期字符串的值如下所示:“2020-05-11 11:58:00.100”
解决方案
2020-05-11 11:58:00.100
不是SQL Server中明确的日期值。对于较旧的日期和时间数据类型,格式yyyy-MM-dd hh:mm:ss.nnn
可以读取为yyyy-dd-MM hh:mm:ss
,具体取决于LOGIN
您使用的语言设置(基本上如果您不是美国人)。唯一明确的格式是yyyy-MM-ddThh:mm:ss(.nnnnnnn)
并且yyyyMMdd
与数据类型和语言设置无关。
但是,你也犯了另一个错误,使用AddWithValue
. 停止使用它并传递您的数据Parameters.Add
并在那里定义数据类型。例如
command.Parameters.Add(parameters[i], SqlDbType.DateTime2).Value = DateTime.Parse(singleValues[i]);
推荐阅读
- python - 在 vscode 中调试 python 失败
- sql - “无法批量加载。排序顺序不正确......”重建索引分区时
- linux-kernel - 在 /usr/src 和 /lib/modules 中找不到 WSL 内核目录
- azure - 如何配置ansible主机通过服务原理连接到azure
- javascript - 如果一个字符连续出现两次,是否可以只替换字符串中的一个字符?
- visual-studio - 如何在 Visual Studio UWP 中启用本地计算机调试?
- pandas - 按熊猫中的许多列分组并将其添加到一个数据框中
- html - 确定特定网站正在使用的 UI 库
- nginx - 是否有可能以及如何使用 NGINX 上传文件?
- docusignapi - 使用 DocuSign 嵌入式签名进行身份验证的法律影响