我的数据库中有一个字段用于保存员工的开始日期。
我想知道本月有多少名员工一周年?
示例,如果员工开始07/12/2012
工作,那么如果当前日期为01/12/2013
,则为他/她的周年纪念。
这是每个员工07/12/2012
的开始日期的格式字符串。我想比较月份和年份(不是日期)。
有人可以告诉我该怎么做吗?
答案 0 :(得分:3)
Transact-SQL中有MONTH
和YEAR
个函数(假设您使用的是MSSQL)。 (See here)
因此,如果您的表格中有DATETIME字段startdate
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
,如上所述)
第二次修改
使用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
数据类型...)
答案 1 :(得分: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
答案 2 :(得分: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;