Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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/5/sql/69.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
通过C#和SQL更新日期数据类型时出错_C#_Sql_Database_Datepicker - Fatal编程技术网

通过C#和SQL更新日期数据类型时出错

通过C#和SQL更新日期数据类型时出错,c#,sql,database,datepicker,C#,Sql,Database,Datepicker,(很抱歉英语不好) 嘿,我在尝试更新日期数据类型时遇到了问题 这是我的SQL查询 UPDATE Employees SET BirthDateEmp = '04/11/2012' WHERE (IdEmp = 1) 所以我将日期设置为4,月份设置为11,年份设置为2012 但是当我检查我的表格时,它会在日期和月份之间切换,所以现在是第11天,第4个月 如果我尝试将此日期设置为“2012年10月13日”(2012年10月13日) 我得到了错

(很抱歉英语不好)

嘿,我在尝试更新日期数据类型时遇到了问题

这是我的SQL查询

UPDATE       Employees
SET                BirthDateEmp = '04/11/2012'
WHERE        (IdEmp = 1)
所以我将日期设置为4,月份设置为11,年份设置为2012

但是当我检查我的表格时,它会在日期和月份之间切换,所以现在是第11天,第4个月

如果我尝试将此日期设置为“2012年10月13日”(2012年10月13日) 我得到了错误,因为它试图把:第10天,第13个月,而没有第13个月,所以我得到了错误


为什么会发生这种情况?

您的SQL server似乎希望使用US格式的日期(mm/dd/yyyy)。您需要让我们知道您使用的是什么数据库和操作系统。

应用程序和数据库上的本地化设置彼此不兼容

应用程序中似乎有(并且需要)英国日期格式(DD/MM/YYYY),但数据库中有美国日期格式(MM/DD/YYYY)

您可以将数据库更改为以中性格式存储日期,然后更新应用程序以获取本地日期,并将其转换为这种中性格式,然后再存储到数据库中,并在显示日期时从数据库中进行转换


您还应该将日期存储在日期(或日期时间)列中,而不是字符串。

您可以通过代码更改日期数据类型的格式并检查查询

UPDATE       Employees
SET                BirthDateEmp = '11/04/2012'
WHERE        (IdEmp = 1)

这将更新您的表,因为SQL中日期数据类型的默认格式是(MM/dd/yyyy),所以请遵循此操作。

问题在于您使用的日期格式不明确,并且服务器上的区域性不是您期望的

理想情况下,您希望使用类型化参数,而不要将日期作为字符串处理


如果您必须使用字符串,我发现以下格式最为成功:yyyy-MM-dd

您的sql server运行在en-US文化中,所以它的解析日期是
m/dd/yyyy
我该如何更改它?这是一个错误的建议,因为它只是将一个假设更改为另一个假设,这将不会普遍适用于google中的serach,并且没有找到关于如何将数据库更改为存储在UTC中的好答案。@user2120874-抱歉,我使用UTC作为速记。我将更新答案。我使用了日期数据类型和datetimepicker@user2120874当然可以,但是你是如何构建查询的?我使用的是Windows7(英语),我的SQL server是基于C#构建的。但是我自己的计算机日期是DD/MM/yyyyy,我需要将SQL server转换为DD/MM/YYYY。我还想编辑,当我显示表格数据时,我看到的日期是用DD/MM/YYYY写的(就像在我自己的计算机中一样)