我有一个MySQL数据库。在几个表中,存储的信息需要按周检索。所以,我希望能够做SELECT FROM *database* WHERE week = *week*
。我遇到的问题是周部分存储为unix时间戳(以允许更多的多样性,如获取日期和时间,只是时间等...)。
所以问题:当存储的WHERE date = *date*
是一个unix时间戳而date
我与之匹配时,如何检索此记录date
是不?
如果我的问题太混乱,需要改写或更清楚地说出来,请发表评论并告诉我。
答案 0 :(得分:2)
MySQL有一个内置的WEEK()
方法来处理日期:MySQL WEEK() Reference
不幸的是,MySQL的WEEK()方法只支持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