我已经在数据库中存储了时间戳。时间戳一样483753600,799286400等
我想检查2015年是否与我的任何时间戳相匹配。
我知道自己可以做到的唯一方法是从数据库中获取所有时间戳,然后使用来检查每个时间戳的年份getdate(799286400)['year']。那将是一个解决方案,但对性能而言太糟糕了!还有其他更柔软的方法吗?
更新资料 到目前为止,这是我尝试过的:
public function dateOfBirth(string $year): array { return $query = $this->createQueryBuilder('p') ->select('p.uid') ->where("p.dateOfBirth BETWEEN :start AND :end") ->setParameter('start', "$year-01-01") ->setParameter('end', "$year-01-01") ->getQuery() ->getResult(); } 但它返回一个空数组。
问题来源于stack overflow
似乎您正在存储纪元时间戳。要检查属于2015年的时间戳,一种有效的方法是生成代表年份边界的时期时间戳范围,然后将其与存储的值进行比较。假设时间戳存储在column中col:
select exists ( select 1 from mytable
where col >= unix_timestamp('2015-01-01') and col < unix_timestamp('2016-01-01') ) as exists_year_2015 该查询将为您提供一条唯一记录,其中包含一个包含布尔值(0/1)的唯一列,该布尔值指示表中的任何记录是否具有属于2015年的时间戳。
这样的表达式将能够利用timestamp列上的索引。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。