我的数据库中有一个字段保存员工的开始日期。
我想知道这个月有多少员工有一周年纪念日?
例如,如果员工开始工作,07/12/2012
那么如果当前日期是01/12/2013
,那就是他/她的周年纪念日。
这是每个员工的开始日期的格式字符串07/12/2012
。我只想比较月份和年份(不是日期)。
谁能告诉我该怎么做?
我的数据库中有一个字段保存员工的开始日期。
我想知道这个月有多少员工有一周年纪念日?
例如,如果员工开始工作,07/12/2012
那么如果当前日期是01/12/2013
,那就是他/她的周年纪念日。
这是每个员工的开始日期的格式字符串07/12/2012
。我只想比较月份和年份(不是日期)。
谁能告诉我该怎么做?
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)
年份,或者使用CONVERT或PARSE函数将其转换为日期时间(然后使用MONTH
andYEAR
如上所述)
第二次编辑
使用 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
数据类型......)
要在 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;
它很容易:
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