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 如何从变量sql中获取正确的日期部分_Sql Server_Sql Server 2008_Sql Server 2005_Sql Server 2000 - Fatal编程技术网

Sql server 如何从变量sql中获取正确的日期部分

Sql server 如何从变量sql中获取正确的日期部分,sql-server,sql-server-2008,sql-server-2005,sql-server-2000,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2000,需要从日期变量中获取年、月和日部分。当触发下面的查询时,它将日设为8,月设为4 declare @date1 datetime set @date1='04/08/2014' ------'dd/mm/yyyy' --select @date1,year(@date1) year1,month(convert(@date1,datetime)) month1,day(@date1) day1 select YEAR(CONVERT(DATETIME,@date1)) YE

需要从日期变量中获取年、月和日部分。当触发下面的查询时,它将日设为8,月设为4

declare @date1 datetime
set @date1='04/08/2014'
        ------'dd/mm/yyyy' 

--select @date1,year(@date1) year1,month(convert(@date1,datetime)) month1,day(@date1) day1
select   YEAR(CONVERT(DATETIME,@date1)) YEAR1,
            MONTH(CONVERT(DATETIME,@date1)) MOTNH1,
            DAY(CONVERT(DATETIME,@date1)) DAY1
FROM            Tab1
检查日期时间可能的格式

declare @date1 datetime
set @date1=CONVERT(DATETIME,'04/08/2014',103)

SELECT  YEAR(@date1) YEAR1,
        MONTH(@date1) MOTNH1,
        DAY(@date1) DAY1

请注意,
dd/MM/yyyy
dd/MM/yy
不同。第一个需要
103
作为格式开关,第二个需要
3

最好使用
yyyyMMdd
,如果您可以控制格式,SQL server将始终明确解释该格式。更好的方法是只使用
datetime
值,如果可能的话,避免考虑字符串形式。但是,我需要遵循英国日期格式dd/mm/yy,仍然将月份作为4检查我的编辑。这是因为您将变量声明为DateTime并直接应用该值。如果将字符串表示形式转换为103格式,您将获得正确的日期。
SELECT
查询中的
convert
s是无意义的-
@date1
此时已经是
DATETIME
,因此它们将不起作用。@Damien\u不信者如此真实。我离开它们是因为最初我认为var是varchar,但是是的,它们是毫无意义的,因为它是datetime。另外,在SQL Server中,在获取变量值时,您不需要
FROM
子句:
选择年(@date1)年1,月(@date1)月1,日(@date1)日1
就可以了。