Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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中将int值转换为datetime_Sql_Sql Server_Sql Server 2005 - Fatal编程技术网

在sql server中将int值转换为datetime

在sql server中将int值转换为datetime,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我需要使用sql server转换datetime中的年、月和日的int值 实际上我正在用这个 DECLARE @MONTH INT DECLARE @YEAR INT DECLARE @DAY INT DECLARE @MAXDATE DATETIME DECLARE @MINDATE DATETIME SET @MONTH=12 SET @YEAR=2010 SET @DAY=1 SET @MINDATE=CONVERT(DATE,CAST (@YEAR AS VARCHAR)+ R

我需要使用sql server转换datetime中的年、月和日的int值

实际上我正在用这个

DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @DAY  INT
DECLARE @MAXDATE DATETIME
DECLARE @MINDATE DATETIME

SET @MONTH=12
SET @YEAR=2010
SET @DAY=1


SET @MINDATE=CONVERT(DATE,CAST (@YEAR AS VARCHAR)+ RIGHT ('0'+ CAST (@MONTH AS VARCHAR),2) + RIGHT ('0'+ CAST (@DAY AS VARCHAR),2))

SELECT @MINDATE

工作正常,但我想知道是否存在一种更好的方法来转换这些值。

我认为您肯定有正确的方法来实现这一点。您已经在为个位数的月份和日期填充零;您的解决方案将很好地工作,并且不会不整洁


唯一的另一种方法是使用任意的日期,并在起始点“添加”年、月和日。然而,这不是一个伟大的计划,因为你需要在12月31日开始,我估计是公元0年。这比您目前正在做的简单解析组件更有意义。

这会更简单一些:

select dateadd(month,(@YEAR-1900)* 12 + @MONTH - 1,0) + (@DAY-1)

直到我知道没有办法用内置函数转换它。 如果可以将年、月和日声明为varchar,则更容易:

SET DATEFORMAT YMD;
SET @MAXDATE = @YEAR+'/'+@MONTH+'/'+@DAY
SELECT @MAXDATE

根据你所说的“更好的方式”,你可能会发现不同的答案是可以接受的。 例如,从字符串转换可能比在脚本中转换更简单(因此更好)。像这样:

SET @MINDATE = CAST(@YEAR AS varchar) + '-' +
               CAST(@MONTH AS varchar) + '-' +
               CAST(@DAY AS varchar)
也就是说,如果变量是
datetime
,则转换将是隐式的,因此无需使用
CONVERT
。这里选择的格式是
YYYY-MM-DD
,或者更确切地说是
yyy-M-D
,据我所知,无论语言环境设置如何,都可以接受隐式转换

编辑:如果我没弄错的话,您选择的格式,
YYYYMMDD
,也是独立于语言环境的。我的观点是,它需要一个更复杂的表达式来从整数生成正确的字符串,这似乎给您带来了不便。

您确定这在激活了“德语”日期格式的SQL Server上可以工作吗??我非常怀疑它-如果你这样做(字符串连接),那么请:使用ISO-8601格式
YYYYMMDD
-这将在任何系统上工作,具有任何语言设置。。。