通过PHP使用postgresql的Age函数
我试图通过年龄范围过滤我的结果。在我的数据库中,有一个表有一列'dob',所以我尝试使用postgreSql的AGE函数从'dob'中获取年龄。但它不起作用。下面是我的代码 contact.php contactController.php 当我在Postgre中尝试上面的sql时,我得到一个错误,年龄不是一个定义的函数。我希望筛选栏中年龄用户选择范围内的所有用户。谢谢你的帮助。TIA尝试立即使用,而不是使用时间戳。此外,如果您只想比较年份,请使用从年龄中提取的年份,这将只显示年份。 假设您的dob是日期或时间戳类型:通过PHP使用postgresql的Age函数,php,postgresql,Php,Postgresql,我试图通过年龄范围过滤我的结果。在我的数据库中,有一个表有一列'dob',所以我尝试使用postgreSql的AGE函数从'dob'中获取年龄。但它不起作用。下面是我的代码 contact.php contactController.php 当我在Postgre中尝试上面的sql时,我得到一个错误,年龄不是一个定义的函数。我希望筛选栏中年龄用户选择范围内的所有用户。谢谢你的帮助。TIA尝试立即使用,而不是使用时间戳。此外,如果您只想比较年份,请使用从年龄中提取的年份,这将只显示年份。 假设您的d
$ageSql = "SELECT id FROM table WHERE EXTRACT(YEAR FROM AGE(now(), dob)) >= 25 AND EXTRACT(YEAR FROM AGE(now(), dob)) <= 40";
$params['queryOptions']['where'][] = "contact_id IN $ageSql"; //use 'IN' in case more than 1 row
如果'dob'是某个varchar或text类型,则按如下方式进行转换-dob::timestampage计算两个日期的时间戳之间的差异。您缺少每个的第二个运算符age@LelioFaieta在postgreSql文档中,它说如果我们想将当前日期作为第一个参数,我们可以使用上面的语法。我尝试在db上运行以下查询,从用户中选择id,其中AGEtimestamp dob>=20,AGEtimestamp dob尝试删除dob前面的时间戳。我想dob是约会对象,对吧?如果不投。
<?php
class userController extends AdminController {
function __construct(){
parent::__construct("Contact","contacts");
}
function index(Array $params = []){
$ageSql = "";
if(isset($_GET['from_filter']) && isset($_GET['to_filter'])) {
$from_age = $_GET['from_filter'];
$to_age = $_GET['to_filter'];
$ageSql = "SELECT id FROM user WHERE AGE(timestamp dob) >= $from_age AND AGE(timestamp dob) <= ($to_age)";
$params['queryOptions']['where'][] = "contact_id = $ageSql";
}
parent::index($params);
}
}
$ageSql = "SELECT id FROM table WHERE EXTRACT(YEAR FROM AGE(now(), dob)) >= 25 AND EXTRACT(YEAR FROM AGE(now(), dob)) <= 40";
$params['queryOptions']['where'][] = "contact_id IN $ageSql"; //use 'IN' in case more than 1 row