Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.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 无法使用与SQL server日期格式不同的格式保存日期_Sql Server_Vb.net - Fatal编程技术网

Sql server 无法使用与SQL server日期格式不同的格式保存日期

Sql server 无法使用与SQL server日期格式不同的格式保存日期,sql-server,vb.net,Sql Server,Vb.net,我的服务器采用MM/dd/yyyy格式。我正在保存来自用户的调查,其中包括他们提交调查的日期。但是一些用户得到了一个错误,即nvarchar数据类型转换为日期-时间数据类型导致的值超出范围。这是我使用datetime.now保存调查日期的时候。当我检查他们的计算机时,他们有不同的日期格式。因此,我尝试将其更改为服务器日期格式,但这些用户不想更改其日期格式。因此,在不更改计算机中的日期格式的情况下,是否有任何可能的解决方案 .AddWithValue("@SurveyDat

我的服务器采用MM/dd/yyyy格式。我正在保存来自用户的调查,其中包括他们提交调查的日期。但是一些用户得到了一个错误,即nvarchar数据类型转换为日期-时间数据类型导致的值超出范围。这是我使用datetime.now保存调查日期的时候。当我检查他们的计算机时,他们有不同的日期格式。因此,我尝试将其更改为服务器日期格式,但这些用户不想更改其日期格式。因此,在不更改计算机中的日期格式的情况下,是否有任何可能的解决方案

            .AddWithValue("@SurveyDate", System.Data.SqlDbType.DateTime).Value = DateTime.NOw
            .AddWithValue("@EDate", System.Data.SqlDbType.DateTime).Value = DateTime.Now
您的代码应该是:

 Dim dt As Date = DateTime.Today

.Add("@SurveyDate", System.Data.SqlDbType.DateTime).Value = dt
.Add("@EDate", System.Data.SqlDbType.DateTime).Value = dt
请注意,我已经更正了您使用
字符串
而不是
日期
,以及更正了您使用
AddWithValue
而不是
添加
。如果要使用
AddWithValue
,请正确使用,即指定值:

.AddWithValue("@SurveyDate", dt)
.AddWithValue("@EDate", dt)

AddWithValue
的思想是提供值,并由此推断数据类型。问题是可能推断出错误的数据类型。例如,SQL Server有
date
datetime
datetime2
等日期。在这种情况下可以推断出哪一个?最好不要假设或在意,只需调用
Add
并指定所需的数据类型即可。

Argh!不要将任何内容转换为非文本的文本。如果要将日期保存到数据库,请保存
日期
,而不是
字符串
。如果希望当前日期不带VB中的时间,请使用
date.Today
。为什么要转换为字符串?日期/时间信息是数字的(在SQL Server中实际上是2个整数),只是因为我们看到日期“以某种格式”并不意味着它是以这种方式存储的。日期是日期,不是字符串。很抱歉,当我直接将DateTime.now的值传递到参数中时,它会给我相同的错误。此错误仅适用于在其计算机中使用dd/MM/yyyy格式的用户,但对于其他用户,它运行平稳,如果您始终使用二进制日期值,则不可能出现日期格式问题。不是没有问题,而是你在想象(例如,在某处错误地阅读了某些内容),就是你首先通过将
日期
转换为
字符串
来制造问题。在你发布的代码中不可能出现该错误。错误消息提到从文本到日期的转换,这在这里不发生。对这个问题做一些适当的调查,找出它实际发生的地方,然后发布一个新的问题,该问题的具体信息与该问题相关。不要改变这个问题,使目前发布的所有内容变得无关紧要。如果此问题不再相关,则将其删除。如果提供的答案确实有帮助,那么就接受它。不管是哪种方式,都可以发布一个新问题,说明什么是有效的不同问题。很抱歉,当我直接将DateTime.now的值传递到参数中时,它会给我相同的错误。此错误仅适用于在其计算机中使用dd/MM/yyyy格式的用户,但对于其他用户,此错误运行平稳。如果您受到本地日期格式的影响,则说明您做错了,因为格式只是将日期显示为文本时的一个问题。无论您在世界上的何处或您的本地设置是什么,.NET
DateTime
值都是完全相同的。系统日期格式只影响日期的显示方式,而不影响日期的存储方式。如果您在日期格式方面遇到问题,那么一定是因为您正在转换为某个
字符串。停止这样做,你的问题就会消失。如果你像我在这里演示的那样做,那么就不会有问题。请准确解释你正在做什么,发生了什么,以及你认为这不正确的原因。请编辑您的问题并添加所有这些详细信息,我指的是所有详细信息。为了简洁起见,不要含糊其辞,也不要遗漏相关内容。你在这里做错了什么,所以我们需要知道你在做什么。谢谢你解释清楚。我的服务器采用MM/dd/yyyy格式。我正在保存来自用户的调查,其中包括他们提交调查的日期。但是一些用户得到了一个错误,即nvarchar数据类型转换为日期-时间数据类型导致的值超出范围。这是我使用datetime.now保存调查日期的时间。所以我认为这是因为用户日期格式不同于服务器日期格式。但正如你所说,这与这个问题无关。datetime.now和datime.today有什么区别?我将改变我的问题。首先从
标签上取日期是错误的。
标签
用于显示数据,而不是存储数据。如果某个日期显示在
标签中
,则该日期必须首先来自某个地方。原始源是您应该从中获取
Date
值的地方。根据来源的不同,您可能需要声明一个类型为
Date
的字段并为其赋值,然后在
标签中显示该字段值,并在其他地方使用它。我意识到你可能没有写那个代码,所以不需要规定。