开发者社区 问答 正文

检查时间戳记的年份

我已经在数据库中存储了时间戳。时间戳一样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 589 分享
分享
版权
举报
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 举报
    赞同 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等