Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/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语句中设置区域性中立日期_Sql_Sql Server - Fatal编程技术网

在与数据库更新脚本一起发布的sql语句中设置区域性中立日期

在与数据库更新脚本一起发布的sql语句中设置区域性中立日期,sql,sql-server,Sql,Sql Server,我目前正在为一个数据库创建和测试更新脚本,该数据库将包含在我创建的程序的安装例程中。在数据库中,我创建了一个名为DatabaseVersionHistory的简单独立表,我的计划是在每次更新时都包含这些内容(我不打算进行大量的更新,但我意识到,奇怪的一个是不可避免的,考虑到它们将是累积的,以正确的顺序安装它们是至关重要的 我的问题是: 以这个脚本为例 UPDATE DatabaseVersionHistory SET VersionNumber =1.1, ReleaseDate =

我目前正在为一个数据库创建和测试更新脚本,该数据库将包含在我创建的程序的安装例程中。在数据库中,我创建了一个名为DatabaseVersionHistory的简单独立表,我的计划是在每次更新时都包含这些内容(我不打算进行大量的更新,但我意识到,奇怪的一个是不可避免的,考虑到它们将是累积的,以正确的顺序安装它们是至关重要的

我的问题是:

以这个脚本为例

 UPDATE DatabaseVersionHistory
  SET VersionNumber =1.1,
  ReleaseDate = '20/01/2016',
  ReleasedWithFTVersion = 1.01
编写ReleaseDate=的正确方法是什么,以便它以文化中立的方式工作

考虑到我正在设置一个特定的版本号,日期是学术性的,我可以接受这一点,但如果可以以文化中立的方式轻松设置的话,我希望它在那里

问题的下一部分涉及到未来的更新和最佳方法问题。是否应该简单地使用一个更新脚本,对版本号进行测试,然后运行一个案例语句,以使最终用户的数据库达到正确的版本,或者让最终用户运行一系列脚本到b将数据库升级到正确的版本。我的计划是在安装程序中实现这一切的自动化,因此没有什么是一成不变的,我想从一开始就尝试采用最佳实践


我特意将其标记为SqlServer,因为第二部分有一个一般方面。实际上,它很可能以SqlServer 2012或更高版本作为标准或express变体的目标。

正如Aaron Bertrand在其文章中所写:

SQL Server中唯一真正安全的日期/时间文本格式,位于 DATETIME和SMALLDATETIME的最小值为:

YYYYMMDD
YYYY-MM-DDThh:mm:ss[.nnn]

例如,即使您尝试使用看似明确的
YYYY-MM-DD
,这在某些情况下可能会中断,例如 用户的语言设置设置为法语

YYYY-MM-DD
相反,
yyyyymmdd
永远不会中断

因此,
YYYY-MM-DD
对于SQL Server中的
datetime
类型是不安全的。请使用
YYYYMMDD

您的查询应如下所示:

UPDATE DatabaseVersionHistory
SET 
    VersionNumber = 1.1,
    ReleaseDate = '20160120',
    ReleasedWithFTVersion = 1.01

ANSI SQL日期格式为YYYY-MM-DD。@jarlh,
yyy-MM-DD
在某些情况下可以在SQL Server中中断,例如当用户的语言设置设置为法语时。此信息也可以在for DATETIME中找到,其中明确指出
DATETIME不符合ANSI或ISO 8601。
。如果想要符合ISO8601标准,请联系我们e(日期和时间符合ANSI和ISO 8601标准适用于datetime2。)。我知道我在过去犯过这样的错误……非常感谢您的进一步澄清,这尤其有用,因为我在法国和西班牙有人将使用这一标准。