我是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月的任何人。
答案 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,您需要检查可以计算两个日期之间的差的等效函数。