Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL选择从某个年龄以下开始的计数_Sql_Database_Select - Fatal编程技术网

SQL选择从某个年龄以下开始的计数

SQL选择从某个年龄以下开始的计数,sql,database,select,Sql,Database,Select,我想在一张桌子上数一数低于一定年龄的人。像这样的 select count(*) as total from 'TABLE' where 'BIRTHDAY'> 19 years old ; 字段类型为生日日期 我是sql新手,只是不知道如何正确编写 在MySQL中,您可以执行以下操作: select count(*) as total from TABLE where BIRTHDAY < CURDATE() - INTERVAL 19 YEAR; 从表中选择count(*)作

我想在一张桌子上数一数低于一定年龄的人。像这样的

select count(*) as total from 'TABLE' where 'BIRTHDAY'> 19 years old ;
字段类型为生日日期

我是sql新手,只是不知道如何正确编写

在MySQL中,您可以执行以下操作:

select count(*) as total from TABLE where BIRTHDAY < CURDATE() - INTERVAL 19 YEAR;
从表中选择count(*)作为总计,其中生日

注意:您不希望在tablename或column name周围使用
,因为这会使它们成为字符串,并且您的语句会失败。

对于SQL Server和MySQL,您可以使用
DATEDIFF
函数

SELECT COUNT(*) FROM Table WHERE DATEDIFF(year,BIRTHDAY,today) > 19

(将今天位替换为用于获取今天日期的RDBMS的相关命令(例如:用于SQL Server的GETDATE())

您使用的是哪种DBMS?Postgres?Oracle?喜欢用简单的英语进行查询!+1指出不要使用“OPI刚才使用的表/列名”作为重点。我得到了这个错误动态SQL错误。SQL错误代码=-104。未知标记-第1行,第78列。19。看到了吗?这就是您没有指定确切的我不知道SQL Server是什么,但在MySQL中,如果这样写的话,就不能使用索引,因为列在函数中。不过,IIRC可以在函数调用中创建索引。不过,重新排列更容易,因此列在一边,计算在另一边。但我不知道有哪种类型的SQL可以对包含非确定性值(如“today”)的函数进行索引。但是这个问题很容易解决,使用生日我现在很困惑的地方-这段代码从员工那里选择COUNT(*),其中DATEDIFF(year,DOB,GETDATE())>200在SQL Server 2008上运行并返回我预期的结果没有人说结果不对。只是索引不能这样使用。这是有效的!谢谢你的建议。对于firebird,我必须使用cast('Now'作为日期)替换DATEDIFF函数中的参数today。