2012-03-18 14 views
0

従業員が動物園で働いていた時期がありますが、そこで働いている期間を把握する必要があります。私は研究を行い、何が必要かを知っていますが、DATEDIFF関数内にNOW()関数を組み込むための構文を理解しているようです。私はすべてのアクティブな従業員と彼らが働いている年数(小数点以下2桁)を表示する必要があります。開始日とシステム時刻の間の年月の差

私は(日)に入社し、辞任(従業員がアクティブである場合はnullを等しくすることができる日、)

は、だから/ YYYY/MM(誰かが1996年9月18日に作業を開始したことを言うことができます、2つの列を持っていますdd)。

お手数をおかけしてください、誠にありがとうございます。

+0

使用しているデータベース? –

+0

S/Oへようこそ。一般的には、試してみたものを提供することは良い考えです。最初に良いものを与えればもっと知ることができます: ' – halfer

+1

(あなたのデータベースタイプであなたの質問をretagしてください)。 – halfer

答えて

1

(MySQLを使用していると仮定 - NOW()機能から)私はあなたがResignedNOW()いずれかがDATEDIFF()で計算に使用されるようにCOALESCE()機能を使用する必要があると思う

を:

DATEDIFF(COALESCE(Resigned, CURDATE()), Joined) AS days 

ので、

​​

または:

(DATEDIFF(COALESCE(Resigned, CURDATE()), Joined))/365.25 AS years 

極端なケースやうるう年については非常に正確にするには、もっと複雑な計算が必要です。小数点以下2桁(と仮定すると、TSQL)と

1

SELECT ROUND( 
     CONVERT(FLOAT, 
      DATEDIFF(day,joined,ISNULL(resigned,GETDATE())))/365,2) 
関連する問題