我需要MySQL编写一个查询,它会检索unix时间戳字段(“added_on”)超过6个月的所有行。
帮助?
提前致谢!
答案 0 :(得分:6)
SELECT *
FROM yourtable
WHERE added_on <= UNIX_TIMESTAMP(DATE_SUB(now(), INTERVAL 6 MONTH))
答案 1 :(得分:2)
SELECT * FROM mytable WHERE added_on < (NOW() - (6 * 30 * 24 * 60 * 60));
答案 2 :(得分:2)
MySQL的DATE_ADD()(又名DATE_SUB)函数提供了您的功能:
SELECT * FROM table WHERE DATE_ADD(FROM_UNIXTIME(added_on), INTERVAL 6 MONTH) > NOW()
......并且非常易读: - )
答案 3 :(得分:2)
select * from table
where now() - interval 6 month > from_unixtime(added_on)
答案 4 :(得分:1)
SELECT * FROM foobar WHERE added_on < UNIX_TIMESTAMP() - 15778463
这不是6个月,因为它每年都有所不同,但它应该足够接近各种目的(converted to seconds by Google)
您还可以将UNIX时间戳转换为“真实”时间戳,并在其上使用MySQL的日期/时间函数,这可能更准确,看起来比将15778463
整数硬编码到查询更漂亮(你可以使用INTERVAL 6 months
),但它也比使用普通整数慢得多。