Sql server 如何从变量sql中获取正确的日期部分
需要从日期变量中获取年、月和日部分。当触发下面的查询时,它将日设为8,月设为4Sql 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
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
就可以了。