Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 SQL Server(T-SQL)日期时间转换_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 2008 SQL Server(T-SQL)日期时间转换

Sql server 2008 SQL Server(T-SQL)日期时间转换,sql-server-2008,tsql,Sql Server 2008,Tsql,也许是个愚蠢的问题,但我想澄清一下。我创建了一个脚本,其中包含一个日期参数,如下所示: DECLARE @dateparam as datetime SET @dateparam = '01-01-2013 00:00:00' 即使日期字符串的格式不正确yyyy MM dd hh:MM:ss,当我测试它时,它看起来仍在工作。我把我的电脑区域设置改成了英语,脚本仍然按照它应该做的做 这是因为我的计算机中有SQL Server 2008 R2,它知道如何转换日期,还是我在使用我使用的日期格式时遇到

也许是个愚蠢的问题,但我想澄清一下。我创建了一个脚本,其中包含一个日期参数,如下所示:

DECLARE @dateparam as datetime
SET @dateparam = '01-01-2013 00:00:00'
即使日期字符串的格式不正确yyyy MM dd hh:MM:ss,当我测试它时,它看起来仍在工作。我把我的电脑区域设置改成了英语,脚本仍然按照它应该做的做

这是因为我的计算机中有SQL Server 2008 R2,它知道如何转换日期,还是我在使用我使用的日期格式时遇到了问题?

转换01-01-2013不会暴露诸如哪个01是月份,哪个是日期之类的问题

这不是一种安全的格式

转换为datetime而不是datetime2的安全格式为:

坚持那些,只坚持那些。所有示例均代表2012年12月1日

或者,如果可以避免的话,最好不要把日期当作字符串。例如,如果您是从.NET代码调用SQL Server,请在代码中将该日期保留为DateTimes,并让ADO.NET和SQL Server处理任何所需的翻译,使其成为DateTimes,而无需将其转换为字符串或字符串。

转换01-01-2013不会暴露诸如哪个01是月份之类的问题,今天是哪一天

这不是一种安全的格式

转换为datetime而不是datetime2的安全格式为:

坚持那些,只坚持那些。所有示例均代表2012年12月1日


或者,如果可以避免的话,最好不要把日期当作字符串。例如,如果您是从.NET代码调用SQL Server,请在代码中将该日期保留为日期时间,并让ADO.NET和SQL Server处理任何所需的翻译,使其成为日期时间,而无需将其转换为字符串或字符串。

您是从看起来像日期的内容进行隐式转换,但inf事实是一个字符串“01-01-2013 00:00:00”。您应该通过指定格式来明确转换,而不是依赖SQL Server来正确猜测字符串的格式


这可以通过使用CONVERT not CAST并指定“样式”来完成。这里列出了不同的样式:。

您正在从看起来像日期的内容进行隐式转换,但inf fact是字符串“01-01-2013 00:00:00”。您应该通过指定格式来明确转换,而不是依赖SQL Server来正确猜测字符串的格式


这可以通过使用CONVERT not CAST并指定“样式”来完成。这里列出了不同的样式:。

谢谢,这是我期望的,但需要确认:@Damien关于yyyyymmdd的情况如何hh:mm:ss?@Erike-根据我的经验,这不安全。目前我手头没有服务器,但我建议尝试使用这种格式,将系统设置为英式,然后转换为datetime,看看结果是否符合您的期望。我给出的3种格式已经过多年的验证。谢谢,这是我所期望的,但我希望得到确认:@Damien关于YYYYMMDD的情况如何hh:mm:ss?@Erike-根据我的经验,这并不安全。目前我手头没有服务器,但我建议尝试使用这种格式,将系统设置为英式,然后转换为datetime,看看结果是否符合您的期望。我给出的3种格式经过多年的验证。嘿,谢谢。使用CONVERT是我将来需要做的事情。嘿,谢谢。使用CONVERT是我将来需要做的事情。
YYYYMMDD                               20121201
YYYY-MM-DD'T'hh:mm:ss                  2012-12-01T10:43:29
YYYY-MM-DD'T'hh:mm:ss.mil              2012-12-01T10:43:29.337