从数据库中检索的unix时间戳获取一周

时间:2013-05-28 23:18:41

标签: php mysql date time

我有一个MySQL数据库。在几个表中,存储的信息需要按周检索。所以,我希望能够做SELECT FROM *database* WHERE week = *week*。我遇到的问题是周部分存储为unix时间戳(以允许更多的多样性,如获取日期和时间,只是时间等...)。

所以问题:当存储的WHERE date = *date*是一个unix时间戳而date我与之匹配时,如何检索此记录date是不?

如果我的问题太混乱,需要改写或更清楚地说出来,请发表评论并告诉我。

1 个答案:

答案 0 :(得分:2)

MySQL有一个内置的WEEK()方法来处理日期:MySQL WEEK() Reference

不幸的是,MySQL的WEE​​K()方法只支持DATE数据类型而不是UNIX TIMESTAMP。因此,我们必须首先将时间戳转换为日期,以便我们可以将该日期传递给WEEK()方法:

SELECT
  *
FROM
  my_table
WHERE
  WEEK(
    DATE_FORMAT(
      FROM_UNIXTIME('my_unix_timestamp_col'),
      '%e %b %Y'
    )
  ) = 51

如果您有一个DATE数据类型的列,则可以简化查询(也可以使用索引):

SELECT * FROM my_table WHERE WEEK(my_date_col) = 51