开发者社区> 问答> 正文

检查时间戳记的年份

我已经在数据库中存储了时间戳。时间戳一样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

展开
收起
保持可爱mmm 2019-11-15 11:42:37 546 0
1 条回答
写回答
取消 提交回答
  • 似乎您正在存储纪元时间戳。要检查属于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列上的索引。

    2019-11-15 11:42:47
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载