SQL DATEPART无需创建新列

时间:2013-09-08 22:13:01

标签: sql sql-server date sql-server-2012 datepart

我希望能够做到这样的事情,以便以后与@YearVar一起使用。

SET @YearVar DATETIME = CONVERT(nvarchar, date_hired, 106),
DATEPART(YEAR, date_hired)

然而,我知道如何使用datepart的唯一方法是:

SELECT CONVERT(nvarchar, date_hired, 106) As Hire_Date,
DATEPART(DAY, date_hired) As [Day],
DATEPART(MONTH, date_hired) As [Month],
DATEPART(YEAR, date_hired) AS [Year]
FROM hire

任何帮助都会非常感谢。

安迪

2 个答案:

答案 0 :(得分:0)

您可以声明和设置如下所示的变量。

DECLARE @YearVar int = (select DATEPART(YEAR, GETDATE()))    

OR

DECLARE  @YearVar int    
SET @YearVar =  (select DATEPART(YEAR, GETDATE()))    

select查询应该只返回一个值。

如果您想设置一次值并在查询中使用它,它将始终为您提供相同的值。如果您要查看表中每行的年份,则显示的查询将起作用。或者,您可以将计算列创建为ALTER TABLE hire ADD year as DATEPART(YEAR, date_hired),但会对表中的每一行执行DATEPART

答案 1 :(得分:0)

从你的问题和评论中,你会找到类似的东西:

DECLARE @YearHired int
SET @Year = (SELECT YEAR(date_hired) FROM hire)