其中当前时间戳为两个unix时间戳SQL查询

时间:2011-12-14 20:54:54

标签: mysql sql

我试图进行查询,其中time()在date_start和date_end之间 我试过了:

date_start > CURRENT_TIMESTAMP AND date_end < CURRENT_TIMESTAMP

WHERE CURRENT_TIMESTAMP BETWEEN date_start AND date_end

仍然没有为我锻炼。尝试了CURRENT_TIMESTAMP()。

Mysql的

id  item_id percentage  rabatcode   date_start  date_end
9   6       50          XXY-GGS-82  1323817200  1324422000  

3 个答案:

答案 0 :(得分:2)

通过NOW()比较FROM_UNIXTIME()与值:

WHERE NOW() BETWEEN FROM_UNIXTIME(date_start) AND FROM_UNIXTIME(date_end)

理想情况下,如果您可以修改数据库结构,那么将日期存储为MySQL的本地DATETIME类型通常要好得多,因为MySQL的日期处理功能可以使用日期类型而不需要转换。

答案 1 :(得分:2)

您在问题的标题中提到要检查当前时间是否在UNIX时间戳之间,因此您需要使用UNIX_TIMESTAMP()函数:

WHERE UNIX_TIMESTAMP() BETWEEN date_start AND date_end

NOW()会返回一个字符串(来自手册:'2007-12-15 23:50:26'),因此无法满足您的需求。

答案 2 :(得分:-1)

问题是你不能两次使用CURRENT_TIMESTAMP。您应该考虑将日期转换为其他格式,并将其与NOW()进行比较(如果它们已经无法与NOW()进行比较。