1

データベースに、従業員の開始日を保持するフィールドが1つあります。

そして、今月に1周年を迎える従業員の数を知りたいのですが。

例、従業員が作業を開始し07/12/2012た場合、現在の日付がである場合01/12/2013、それは彼/彼女の記念日です。

これは、各従業員の開始日のフォーマット文字列です07/12/2012。そして、月と年(日付ではなく)だけを比較したいと思います。

誰かがそれを行う方法を教えてもらえますか?

4

3 に答える 3

3

Transact-SQLには関数がありMONTHますYEAR(MSSQLを使用していると仮定します)。(ここを参照

startdateしたがって、テーブルにDATETIMEフィールドがある場合

SELECT * FROM employee WHERE MONTH(startdate)=12 AND YEAR(startdate)=2012

2012年12月に1周年を迎えるすべての従業員を獲得します。

編集

テーブルに文字列としての日付が含まれている場合はSUBSTRING(startdate,3,2)、月(文字列として!)とSUBSTRING(startdate,6,4)年を取得するために使用するか、CONVERT関数またはPARSE関数を使用してそれを日時に変換することができます(その後、上記のように使用MONTHします)YEAR

2回目の編集

Linq to SQLを使用すると、次のようになります。

var result = from employees e 
             select e 
             where e.startdate.Month==DateTime.Now.Month 
                   && e.startdate.Year==DateTime.Now.Year;

startdateデータベースの列のDATETIMEデータ型が...)

于 2012-07-28T10:34:41.663 に答える
0

それは超簡単:

SELECT  *
From    Member m
WHERE
        MONTH(m.CreatedAt) = MONTH(GETDATE())

また、来年の記念日が必要な場合は、次を使用できます。

SELECT  *
From    Member m
WHERE
        MONTH(m.CreatedAt) = MONTH(GETDATE()) and
        YEAR(m.CreatedAt) = YEAR(GETDATE()) +1
于 2012-07-28T10:42:28.313 に答える
0

SQLで処理するには、

SELECT *  FROM  [dbo].[Employee]
where (DATEPART(mm, [StartDate]) = Month(GetDate())
AND DATEPART(dd, [StartDate]) = Day(GetDate())

C#で

var aniveraries = from employee in employees
                  where
                        employee.StartDate.Month == DateTime.Now.Month &&
                        employee.StartDate.Year == DateTime.Now.Year
                  select employee;
于 2012-07-28T10:52:35.490 に答える