使用MYSQL检查今天是否在数据库中的字段的10天内

时间:2014-03-31 04:48:05

标签: mysql codeigniter unix-timestamp

我有一个名为ticket的数据库表,用于存储票证详细信息。表格的结构如下:

enter image description here

如您所见,该表有一个字段generated_on,其中我将日期存储为UNIX TIMESTAMP。它用于存储生成故障单的日期。门票仅在接下来的10天内有效。

因此,每当用户尝试使用故障单时,系统应检查当前日期是否在故障单的generated_on日期的10天内。我如何在MySQL中检查这个。我知道我们可以通过其他方式执行此操作,但我现在正尝试使用以下查询选择generated_on

$datequery=$this->db->query("select generated_on from ticket where user_id=$userid and video_id=$videoid and status=0");

然后尝试检查今天是否在10天之内。但是如何在单个MySQL查询中检查这个?我正在为我的项目使用CodeIgniter框架。

有人可以帮我找到合适的查询吗?

提前致谢。

2 个答案:

答案 0 :(得分:2)

您只需要使用MySQL DATE_ADD()函数添加10天,为此您必须先使用datetime将unix时间戳转换为MySQL FROM_UNIXTIME()格式,然后将其与当前值进行比较时间NOW()

关键部分:

DATE_ADD(FROM_UNIXTIME(generated_on), INTERVAL 10 DAY) > NOW()

完整查询:

$query = "SELECT generated_on FROM ticket WHERE user_id = " . $userid . " AND video_id = " . $videoid . " AND status = 0 AND DATE_ADD(FROM_UNIXTIME(generated_on), INTERVAL 10 DAY) > NOW()";

更新评论基础

根据评论和四舍五入,您可以使用以下内容:

DATE_ADD(CAST(FROM_UNIXTIME(generated_on) AS DATE), INTERVAL 10 DAY) > CURDATE()

只需更换NOW() CURDATE()我们使用的是日期而不是日期时间,我们还CAST我们使用FROM_UNIXTIME创建的日期时间

完整查询:

$query = "SELECT generated_on FROM ticket WHERE user_id = " . $userid . " AND video_id = " . $videoid . " AND status = 0 AND DATE_ADD(CAST(FROM_UNIXTIME(generated_on) AS DATE), INTERVAL 10 DAY) > CURDATE()";

答案 1 :(得分:0)

您将需要MySQL的DETE_ADD()函数。 http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add

你的问题将是这样的:

选择generated_on  从票  其中user_id = $ userid    和video_id = $ videoid    和status = 0    和generated_on< = DATE_ADD(CURRENT_TIMESTAMP(),INTERVAL 10天);

希望这有帮助, 丹尼斯