如何编写sql以使所有用户在此日期介于20和35之间?

时间:2018-12-10 15:50:14

标签: sql

我是SQL查询的初学者,并且需要有关此简单代码的帮助。我需要在2015年1月1日让用户介于20到35之间。我不确定如何对日期部分进行编码。

select
  *
from
  mytable.device
where
  mytable.birthdate BETWEEN 20 AND 35

太重要了,我需要归还所有从2015年1月1日起20至35岁的用户,所以可以说1980年1月1日至1995年1月的任何人。

2 个答案:

答案 0 :(得分:1)

在SQL Server中,您将使用DATEDIFF来查找生日和2015年1月1日之间的差异。

SELECT
  *
FROM
  mytable.device
WHERE
  DATEDIFF(YEAR,mytable.birthdate,'1/1/2015') BETWEEN 20 AND 35

答案 1 :(得分:0)

免责声明:尽管在SQL标准中定义了日期算术 ,但实际上只有少数DBMS产品在日期或时间戳算术上支持ANSI SQL。

基本思想是,您需要计算2015-01-01与表中的birthdate值之间的差,并将其与您想要的年龄范围进行比较。

Postgres支持age()功能,在这里很方便:

select *
from device
where age(date '2015-01-01', birthdate) between interval '20' year and interval '35' year;

对于ANSI标准SQL,可以使用-运算符编写:

select *
from device
where timestamp '2015-01-01' - birthdate between interval '20' year and interval '35' year;

根据实际的DBMS,您需要检查可以计算两个日期之间的差的等效函数。