Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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
Asp.net sql server中的日期时间格式问题_Asp.net_Sql Server 2005_Datetime - Fatal编程技术网

Asp.net sql server中的日期时间格式问题

Asp.net sql server中的日期时间格式问题,asp.net,sql-server-2005,datetime,Asp.net,Sql Server 2005,Datetime,我在asp.net中有一个应用程序,它工作得很好,直到最近我在“控制面板”的“区域和语言设置”中更改了日期时间格式 当我安装XP时,日期时间格式是默认的。我在安装XP时选择了印度标准时间 我将日期时间格式更改为dd/MM/yyyy HH:MM:ss。每当我试图在表中插入任何datetime时,我的应用程序就会抛出异常 我得到的例外是: System.Data.SqlClient.SqlException:将数据类型varchar转换为datetime时出错 请在这方面帮助我如果看不到抛出的代码,

我在asp.net中有一个应用程序,它工作得很好,直到最近我在“控制面板”的“区域和语言设置”中更改了日期时间格式

当我安装XP时,日期时间格式是默认的。我在安装XP时选择了印度标准时间

我将日期时间格式更改为dd/MM/yyyy HH:MM:ss。每当我试图在表中插入任何datetime时,我的应用程序就会抛出异常

我得到的例外是:

System.Data.SqlClient.SqlException:将数据类型varchar转换为datetime时出错


请在这方面帮助我

如果看不到抛出的代码,就很难确切地知道发生了什么。但是,如果需要将日期与SQL Server进行通信,通常最好使用标准表示,因为它是明确的且与区域设置无关的。最重要的格式是:

  • 日期的yyyy-MM-dd
  • hh:mm:ss
    表示时间
  • 日期/时间的
    yyyy-MM-dd hh:MM:ss
我的猜测是,您有一个查询正在发送当前区域设置中的日期,而服务器上的区域设置不匹配

编辑:作为记录,这并不排除Rob在回答中所说的任何事情,即尽量避免传递硬编码日期或硬编码SQL。这只适用于您出于某种原因需要这样做的情况


编辑2:我被告知,对于某些地区,
yyyy-MM-dd
格式仍然可能是错误的;因此,如果您需要传入一个文本日期字符串,则应该使用
yyyyMMdd

在没有看到抛出的代码的情况下,很难准确地知道发生了什么。但是,如果需要将日期与SQL Server进行通信,通常最好使用标准表示,因为它是明确的且与区域设置无关的。最重要的格式是:

  • 日期的yyyy-MM-dd
  • hh:mm:ss
    表示时间
  • 日期/时间的
    yyyy-MM-dd hh:MM:ss
我的猜测是,您有一个查询正在发送当前区域设置中的日期,而服务器上的区域设置不匹配

编辑:作为记录,这并不排除Rob在回答中所说的任何事情,即尽量避免传递硬编码日期或硬编码SQL。这只适用于您出于某种原因需要这样做的情况


编辑2:我被告知,对于某些地区,
yyyy-MM-dd
格式仍然可能是错误的;因此,如果需要传入文本日期字符串,则应使用
yyyyMMdd

,根据我的评论,您可能希望确保使用的代码与下面的代码具有类似的行为(即使用参数而不是字符串串联)


根据我的评论,您可能希望确保所使用的代码的行为与下面的代码类似(即使用参数而不是字符串串联)

尝试将“Current Language=YourLanguage”添加到SQL server连接字符串中。其中,YourLanguage是希望SQL在读取日期等值时使用的语言

通过执行以下SQL命令,可以查看SQL支持的所有语言的列表:

select * from master.dbo.syslanguages
尝试将“Current Language=YourLanguage”添加到SQL server连接字符串中。其中,YourLanguage是希望SQL在读取日期等值时使用的语言

通过执行以下SQL命令,可以查看SQL支持的所有语言的列表:

select * from master.dbo.syslanguages

也许您可以向我们展示一个导致抛出异常的代码示例?我怀疑您可能没有使用参数,也没有使用某种形式的字符串连接?为什么这个问题被否决了。目前还不清楚,如果没有任何代码,向下投票会更合适。请花些时间写下您的问题,按照上面的注释粘贴一些代码。也许您可以向我们展示一个导致抛出异常的代码示例?我怀疑您可能没有使用参数,也没有使用某种形式的字符串连接?为什么这个问题被否决了。目前还不清楚,如果没有任何代码,向下投票会更合适。请花些时间写下您的问题,并按照上面评论中的要求粘贴一些代码。实际上,YYYYMMDD在SQL Server中比YYYY-MM-DD安全得多。原因:在某些情况下,YYYY-MM-DD实际上被解释为YYYY-DD-MM,例如在使用SET语言法语时。我完全同意应该使用适当的数据类型对数据进行参数化。但这种误解不仅在从客户端代码传递时是一个问题,甚至在T-SQL中直接处理字符串文字时也是一个问题,所以请记住,不能盲目地相信YYYY-MM-DD中的文字日期值。@Aaron:有趣的是,我很惊讶一些地区竟然破坏了ISO标准!将来我必须记住这一点,我会相应地编辑这篇文章。实际上,YYYYMMDD在SQL Server中比YYYY-MM-DD安全得多。原因:在某些情况下,YYYY-MM-DD实际上被解释为YYYY-DD-MM,例如在使用SET语言法语时。我完全同意应该使用适当的数据类型对数据进行参数化。但这种误解不仅在从客户端代码传递时是一个问题,甚至在T-SQL中直接处理字符串文字时也是一个问题,所以请记住,不能盲目地相信YYYY-MM-DD中的文字日期值。@Aaron:有趣的是,我很惊讶一些地区竟然破坏了ISO标准!以后我必须记住这一点,我会相应地编辑这篇文章。