1

我的数据库中有一个字段保存员工的开始日期。

我想知道这个月有多少员工有一周年纪念日?

例如,如果员工开始工作,07/12/2012那么如果当前日期是01/12/2013,那就是他/她的周年纪念日。

这是每个员工的开始日期的格式字符串07/12/2012。我只想比较月份和年份(不是日期)。

谁能告诉我该怎么做?

4

3 回答 3

3

Transact-SQL 中有MONTH和函数(假设您使用 MSSQL)。YEAR见这里

因此,如果您startdate的表中有一个 DATETIME 字段

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

将让所有员工在 2012 年 12 月迎来一周年纪念日。

编辑

如果您的表包含作为字符串的日期,您可以使用SUBSTRING(startdate,3,2)获取月份(作为字符串!)和SUBSTRING(startdate,6,4)年份,或者使用CONVERTPARSE函数将其转换为日期时间(然后使用MONTHandYEAR如上所述)

第二次编辑

使用 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

要在 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 回答
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 回答