sql - sql dateiff 比较年龄和hiredate
问题描述
第一次使用 Stack Overflow,所有的课程都被扔到网上,我在网上上课很糟糕。
问题很简单,我需要使用 datediff 收集公司开始时年龄在 35 岁或以下的员工的信息。
我的代码看起来像这样
Select EmployeeID, FirstName, LastName, BirthDate, HireDate,
datediff(year, BirthDate,HireDate) Age
from Employees
where age<=35;
如果不使用“where”,它将发布人们开始时的年龄。我现在正在尝试显示我创建的年龄列,以发布小于或等于 35 岁或更年轻的每个人。但是,随着年龄的增长,我会遇到语法错误。显然它在sql数据库中不存在。任何帮助,将不胜感激。
解决方案
where
子句不能引用子句中定义的别名(select
后者在前者之后执行)。
您需要在两个子句中重复该表达式:
select
e.*,
datediff(year, BirthDate,HireDate) Age
from employees e
where datediff(year, BirthDate,HireDate) <= 35
或者你可以使用一个 deried 表(子查询或公共表表达式)——但它的效率较低,而且对于这个简单的表达式来说似乎有点过分了:
select *
from (
select
e.*,
datediff(year, BirthDate,HireDate) age
from employees e
) e
where age <= 35
推荐阅读
- html - 图片链接问题:行为差异(IE vs Chrome)
- sql-server - 从 T SQL 存储过程调用 MDX
- php - UPDATE查询形式while循环,代码很慢
- angular - 如何知道子路由是否已经渲染(来自父组件)
- drupal-8 - 是否可以使用 .yaml 文件创建/管理角色?
- javascript - 量角器自定义定位器无法定位元素
- javascript - 为什么if语句会在while循环中阻塞?
- javascript - 如何使用从 Nodejs 中的 1 个函数返回的数组?
- javascript - 传递 axios 数据到视图模板
- bash - 将字符串添加到bash中的列