2017-08-08 23 views
0

何もせずに年齢列を更新する必要があります。生年月日がSQL Serverに到着するまでの年齢を自動的に更新

生年月日が変更されるたびに、自動的に年齢列が更新されます。解決策はありますか?

これは、SQL Serverの2008

ですでにがあなたのテーブルに誕生日付を持っている場合は、Ageは本当にただ計算なってくれ

+0

生年月日がある場合、「Age」は実際には**計算**になります。したがって、生年月日が変更されるたびに自動的に更新される計算列として保存することができます。 –

答えて

1

を助けてください。生年月日が変更されるたびに自動的に更新される計算列として保存することもできます。必要に応じてSELECTで計算することもできます。

質問は次のとおりです:年齢の「正確さ」は何ですか? SQL ServerのDATEDIFF関数は少し粗いです - DATEDIFF(YEAR, ....)計算例。唯一 2の日付を見て - そう

DATEDIFF(YEAR, '20171231', '20180101') 

がを返します - にもかかわらず、これら二つの日付 - 2017年12月31日および2018年1月1日は - 離れてわずか1日です。

あなたはこのような何か試すことができます。

CREATE TABLE dbo.Employees 
(
    EmployeeID INT NOT NULL IDENTITY(1000, 11) 
     PRIMARY KEY CLUSTERED, 
    FirstName VARCHAR(50), 
    LastName VARCHAR(50), 
    DateOfBirth DATE, 
    AgeInYears AS DATEDIFF(YEAR, DateOfBirth, SYSDATETIME()), 
    AgeInMonths AS DATEDIFF(MONTH, DateOfBirth, SYSDATETIME()), 
    AgeInDays AS DATEDIFF(DAY, DateOfBirth, SYSDATETIME()) 
) 

をして、あなたのニーズに十分に正確である(日、月または年)は「年齢」を参照してください。

+0

Mr 。Marc私は生年月日計算があるストアドプロシージャに挿入クエリを書いています。私の質問は、自動的に更新される方法です。レコードを取得する場合、列レコードを自動的に更新する方法を要約してください。 –

+0

@Mohamedjamalbatcha:これは問題ありません。実際にデータを挿入(または更新)した瞬間ですが、それ以降は現時点では正しくありません。 –

+0

私は明らかに私は私のデータベースに従業員のデータを持っている私は私が私がストアドプロシージャで書かれた年齢を自動的に計算する従業員のデータを挿入するが、私は従業員の詳細を取得する場合明日かもしれない更新されたものが自動的に表示されます –