如何设计一个 table 的年龄 returns 两年后在 SQL 服务器中查询该人的当前年龄?
How to design a table having age which returns current age of that person when queried after two years in SQL Server?
我想设计一个table如下,return是两年后查询的人当前年龄return
CREATE TABLE Person
(
Person_ID INT IDENTITY(1,1) NOT NULL,
Initial VARCHAR(50) NULL,
Surname VARCHAR(100) NOT NULL,
Age INT NOT NULL
)
例如table有2行
Person_ID Initial Surname Age
-------------------------------
1 AR Rahman 40
2 M Jackson 50
两年后 select 查询
select age
from Person
where person_ID = 1
应该return42
您应该在 table 中存储出生日期并始终计算年龄。
为此,您可以使用计算列,或者您需要在查询本身中包含计算。
将 table 中的出生日期存储为 DATE 并使用 计算列 而不使用 persisted 关键字,因为年龄计算是非确定性,如下面的代码所示。
CREATE TABLE #Person
(
Person_ID INT IDENTITY(1,1) NOT NULL,
Initial VARCHAR(50) NULL,
Surname VARCHAR(100) NOT NULL,
DOB DATE NULL,
Age AS DATEDIFF(YEAR,DOB,getdate())
)
INSERT INTO #Person
SELECT 'Gyan','Prakash','26-feb-1994'
SELECT * FROM #Person
我想设计一个table如下,return是两年后查询的人当前年龄return
CREATE TABLE Person
(
Person_ID INT IDENTITY(1,1) NOT NULL,
Initial VARCHAR(50) NULL,
Surname VARCHAR(100) NOT NULL,
Age INT NOT NULL
)
例如table有2行
Person_ID Initial Surname Age
-------------------------------
1 AR Rahman 40
2 M Jackson 50
两年后 select 查询
select age
from Person
where person_ID = 1
应该return42
您应该在 table 中存储出生日期并始终计算年龄。
为此,您可以使用计算列,或者您需要在查询本身中包含计算。
将 table 中的出生日期存储为 DATE 并使用 计算列 而不使用 persisted 关键字,因为年龄计算是非确定性,如下面的代码所示。
CREATE TABLE #Person
(
Person_ID INT IDENTITY(1,1) NOT NULL,
Initial VARCHAR(50) NULL,
Surname VARCHAR(100) NOT NULL,
DOB DATE NULL,
Age AS DATEDIFF(YEAR,DOB,getdate())
)
INSERT INTO #Person
SELECT 'Gyan','Prakash','26-feb-1994'
SELECT * FROM #Person