Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Sql server 在新服务器上与美国和英国约会的乐趣_Sql Server_Date_Asp Classic_Iis 8_Windows Server 2012 - Fatal编程技术网

Sql server 在新服务器上与美国和英国约会的乐趣

Sql server 在新服务器上与美国和英国约会的乐趣,sql-server,date,asp-classic,iis-8,windows-server-2012,Sql Server,Date,Asp Classic,Iis 8,Windows Server 2012,我刚刚有幸将一个旧的ASP网站/SQL DB迁移到一个新的专用OVH服务器French-所有默认值都设置为US Eng 数据库已从SQL 2005移动到SQL 2012 web edition 64位 我在网站上看到了旧版本的日期格式,例如8/3/2016,而不是03/08/2016。即使在数据库中,它们存储为ISO日期2016-08-03等 我在ASP经典网站上以英国格式输入日期 e、 g 03/08/2016,并将其转换为SQL中的ISO格式2016-08-03,该SQL将传递给存储过程,该

我刚刚有幸将一个旧的ASP网站/SQL DB迁移到一个新的专用OVH服务器French-所有默认值都设置为US Eng

数据库已从SQL 2005移动到SQL 2012 web edition 64位

我在网站上看到了旧版本的日期格式,例如8/3/2016,而不是03/08/2016。即使在数据库中,它们存储为ISO日期2016-08-03等

我在ASP经典网站上以英国格式输入日期 e、 g 03/08/2016,并将其转换为SQL中的ISO格式2016-08-03,该SQL将传递给存储过程,该存储过程已在其顶部设置了DATEFORMAT YMD

如果我检查数据库中的表,它们都正确地存储为ISO日期

我已经确保数据库的所有SQL登录都选择了英式英语作为默认语言

如果我在选项下查看数据库属性,默认语言为英式英语

如果我在General->Language下查看服务器属性,它是English United States,但在Advanced->Default Language下,它是British English

日期被正确地存储为ISO,就好像我做了DATEDIFFDAY,Stamp,GETDATE=0我可以看到所有记录,即使它们以美国格式8/3/2016出现在网站上,为什么我们的日期前面没有零我不知道

ASP代码没有改变,或者DB代码刚刚被移植到这个新的专用服务器中,现在我遇到了这些问题。我确信我在很久以前就通过更改默认登录语言解决了类似的问题,但在这个框中似乎不起作用

由于使用Betfair API获取赛车数据的.NET应用程序将美国/英国的日期混淆,导致重复插入,因此我收到了大量主键/索引错误,例如

EXEC dbo.usp_net_insert_betfair_market_selection @MarketID = 125932808, @SelectionID = 10593225, @Racedatetime = '2016-08-03 15:10:00', @MarketType = 'WIN', @HorseName = 'She Done Good';
违反主键约束“PK\u BETFAIR\u MARKET\u SELECTIONS”。无法在对象“dbo.BETFAIR\u MARKET\u SELECTIONS”中插入重复密钥。重复键值为719859,WIN,2016年3月8日下午3:10

但是,如果我复制那个EXEC语句并在查询分析器窗口中直接运行它,那么它运行时不会出现任何错误

我一直在用谷歌搜索我的头,我看到有人建议将此代码放在所有显示日期的ASP页面的顶部,以强制其以英国格式显示>

'*将服务器区域设置设置为UK Session.LCID=2057

这在一些页面上起到了作用,但我以前从未这样做过

在一列中包含记录和日期的长列表的页面上,我将日期包装在SQL中的CONVERTvarchar、GETDATE和103中,并在页面上正确返回

但我很困惑,因为我从来没有在旧设置上这样做过,而且似乎必须更改某些设置才能在同一个框中的新服务器SQL和Web IIS 8上修复所有这些

我尝试过进入.NET网站的全球化,并将文化和UI文化改为英语。然而,这并不能解决所有问题

机器上的语言偏好设置为英语UK,尽管我不认为这会有什么不同

如果我在查询分析器中运行此代码,要么将RD放入框中,要么通过通过网络连接到机器的本地SQL控制台

选择名称、别名、日期格式 来自系统语言 兰吉德在哪里= 从master..sysconfigures中选择值 其中comment='默认语言'

在一个查询窗口中,远程桌面进入服务器,我返回

名称别名日期格式 英国dmy

询问: 因此,这似乎与ASP网站或.NET应用程序与服务器/数据库之间的连接有关。我错过了一些东西,或者需要更改,因为这些都在旧的WebServer->Database Server设置上运行良好

你能想到一些我忽略或需要做的事情,以确保日期显示为英国在网站上没有编辑每个ASP页面和SQL包含日期,因为我从来没有这样做,为旧的设置


提前感谢您的帮助

使用一个日期作为唯一标识符可以做到这一点,显然,使用正确的设置是可以的,但随后移动它并发出隆隆声。最好完全避免。服务器的系统区域设置是什么,IIS报告的内容是什么?日期不带格式存储。使用iso标准格式yyyy-mm-dd输入从asp3到sql server的日期。这就是为什么将日期存储在三个单独的列中——月、日、年——这是我在开玩笑的人——很常见的原因。这可能是一件痛苦的事情,但它也完全消除了类似这样的本地化问题。如果您阅读,我确实以ISO格式yyy-mm-dd在数据库中存储日期,当作为网站登录的用户运行时,SQL显示正确的日期,并使用DATEPARTday将其拆分为COL,racedate显示正确的值。所以它一定是网络方面的东西。就像我运行SQL语句按racedate DESC排序一样,我得到了正确的结果,但是如果我将列而不是按部分顺序包装在CONVERTvarchar,racedate,103中,我会得到完全不同的结果,例如 2015年的比赛,而不是昨天的比赛。