从unix时间戳字段获取DATE或DATE AND TIME范围内的记录

时间:2010-11-25 05:22:41

标签: sql mysql

我将日期和时间保存在mysql数据库的unix时间戳中。我想在特定范围的DATE(示例1)或DATE AND TIME(示例2)中获取记录。

示例1: 从日期= 20/10/2010到= 22/10/2010

获取记录

示例2: 从日期= 20/10/2010到= 22/10/2010,从时间= 13:20:00到= 01:10:00获取记录

对此有什么疑问?

非常感谢您的帮助

2 个答案:

答案 0 :(得分:2)

使用FROM_UNIXTIME function将Unix时间戳转换为DATETIME数据类型:

WHERE FROM_UNIXTIME(your_column) BETWEEN '2010-10-20' 
                                     AND '2010-10-22'

BETWEEN运算符是包含的,您需要使用MySQL的标准日期格式(YYYY-MM-DD)将字符串隐式转换为DATETIME,否则您必须使用STR_TO_DATE将字符串转换为约会时间。如果时间部分未包含在字符串中,则默认为午夜。含义'2010-10-20'=='2010-10-20 00:00:00'。

您的第二个要求并不清楚何时适用。如果截止日期为13:20,最后为01:10 - 请使用:

WHERE FROM_UNIXTIME(your_column) BETWEEN '2010-10-20 13:20:00' 
                                     AND '2010-10-22 01:10:00'

最后,在列上使用FROM_UNIXTIME函数会使列上的索引无效。

答案 1 :(得分:0)

仅基于TIME获取记录:

WHERE TIME(FROM_UNIXTIME(your_column)) BETWEEN '01:15:00' 
                                           AND '01:15:59' 

此致