Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server System.Data.SqlClient.SqlException:根据操作系统语言从字符串转换日期时间时,转换失败_Sql Server_Vb.net_Datetime_Type Conversion - Fatal编程技术网

Sql server System.Data.SqlClient.SqlException:根据操作系统语言从字符串转换日期时间时,转换失败

Sql server System.Data.SqlClient.SqlException:根据操作系统语言从字符串转换日期时间时,转换失败,sql-server,vb.net,datetime,type-conversion,Sql Server,Vb.net,Datetime,Type Conversion,我已经为日期时间格式和转换苦苦挣扎了好几天,在搜索失败后,我决定继续问下去 我从.csv文件导入日期时间值,并使用以下C代码行将此字符串值转换为日期时间: DateTime.TryParse("24-08-17", new CultureInfo("fr-FR", true), DateTimeStyles.AssumeLocal, out dt); 我不使用ParseExact或TryParseExact,因为DateTime值的输入字符串格式可能会更改 问题是: 在我同事的电脑上运行法语版

我已经为日期时间格式和转换苦苦挣扎了好几天,在搜索失败后,我决定继续问下去

我从.csv文件导入日期时间值,并使用以下C代码行将此字符串值转换为日期时间:

DateTime.TryParse("24-08-17", new CultureInfo("fr-FR", true), DateTimeStyles.AssumeLocal, out dt);
我不使用ParseExact或TryParseExact,因为DateTime值的输入字符串格式可能会更改

问题是:

在我同事的电脑上运行法语版的Windows10->一切正常

在我的电脑上运行的是ENUS版本的Windows 10->我得到了一个

System.Data.SqlClient.SqlException:转换时转换失败 来自字符串的日期时间

当此日期时间值用于由这行VB.Net代码执行的SQL参数时:

cmd.ExecuteScalar
输出SQL语句如下所示:

select count(*) from xxx where yyy = 212 AND (www <> 2 AND www <> 5) AND zzz = 316882 AND isGgg = 0  and ((date_p >='24-Aug-17 00:00:00' and date_p <='22-Nov-17 00:00:00') or (Date_s >='24-Aug-17 00:00:00' and Date_s <='22-Nov-17 00:00:00'))
我可以在我的计算机上安装Windows的FR语言包,但我不认为这是一个真正的解决方案。 我认为这个问题可以通过修改DateTime.TryParse代码行来解决,但是在尝试了在web上找到的很多东西之后,我仍然无法解决我的问题

有什么想法吗


谢谢。

您的错误是来自SQL server的消息,与解析无关。有必要在查询中正确设置日期格式。我想补充一句;连接字符串的当前语言=英语,日期使用yyyy-mm-dd格式


对TryParse要小心,因为TryParseExact有时会改变月份和日期,因此更可靠。

问题是什么?日期不是字符串,强制DB提供程序转换将涉及区域性问题。您尝试过在SQL中使用日期参数吗?第一句话:我正在努力使用日期时间格式日期没有格式,它们是一个简单的值。今天的日期值为6364690560000000。格式是如何向用户显示该值,以便用户能够理解它们。将日期另存为日期,并将日期作为参数传递,生活将变得甜蜜。不要使用AddWithValue,使用Addstring和DbTypeWonder。这意味着您只需在参数化SQL语句中使用DB参数将DateTime变量作为DateTime类型传递。代码没有显示,我也不知道查询是如何显示的,不需要在任何地方将任何内容转换为字符串。如果每次他使用绝对正确的短语Date没有格式并将日期作为参数传递给@Proputix时,我都会向他捐赠1美元,那么他将是一个非常富有的人;通过日期参数将日期作为日期传递是唯一好的解决方案。如果列的数据类型为date??,为什么要传递字符串???传递文本意味着DB提供者必须将其解析回datetime,这意味着涉及主流文化。dd/MM/yyyy不是所有文化中的法定格式。