我想找一位年满 70 岁零 6 个月的员工。也就是说,他应该在当年的 01/01 和 12/31 之间达到 70 岁零 6 个月。请帮忙。
我的表有员工的出生日期,数据类型 DATE。数据库系统 DB2。
我们知道员工将在今年达到 70 岁零 6 个月时:
因此我们必须这样过滤:
SELECT Name FROM Employees
WHERE DateOfBirth BETWEEN '7/1/' + CAST((YEAR(GETDATE())-71) AS varchar) AND '7/1/' + CAST((YEAR(GETDATE())-70) AS varchar)
Try step by step.
If person becomes 70.5 years old on 2013-01-01, then his birthday is 1942-07-01. If person becomes 70.5 years old on 2013-12-31, then his birthday is 1943-06-30.
Calculate these values in your programming language. Then
SELECT * FROM empleyees WHERE birstday >= '1942-07-01' AND birstday <= '1943-06-30';
(A.BRTH_DT BETWEEN (SUBSTR (CHAR(DATE(&CURRDATE) - 71 YEARS),1,4)||'-07-01') AND (SUBSTR (CHAR(DATE(&CURRDATE) - 70 YEARS),1,4 )||'-06-30')
此 SQL 用于获取年龄为 70.5 的员工。&CURRDATE 指的是当前日期。
您使用的是什么 RDBMS。答案需要日期函数,每个 RDBMS 都使用自己专有的日期函数。
在 SQL Server 中,您可以
Select case When birthdate Between
DateAdd(month, -6, Dateadd(year, -70, dateadd(dd, 1 +
datediff(dd, 0, getdate())-datepart(dy,getdate()), 0)))
And DateAdd(month, 6, Dateadd(year, -70, dateadd(dd,
datediff(dd, 0, getdate())-datepart(dy,getdate()), 0)))