Mysql查询选择date1和date 2之间的时间戳

时间:2015-01-28 10:53:11

标签: mysql sql mysqli mysql-python

我有mysql表

id product p_image 1 G images\20131030164545.jpg 2 S images\20131230164545.jpg 3 V images\20140110164545.jpg 4 R images\20140320164545.jpg 5 K images\20140526164545.jpg 6 L images\20150110164545.jpg 7 SK images\20150120164545.jpg

这里我需要从上表中提取两个日期之间p_image时间戳的产品(例如我需要从2013/12/01到2014/07/30日期提取)

在这个查询中我需要从这个字符串中提取时间戳' images \ 20140526164545.jpg'并将其转换为日期格式并选择两个日期之间的值。

请帮帮我..

3 个答案:

答案 0 :(得分:3)

假设字符串的格式是固定的(看起来是这样),您可以使用substr函数提取时间戳,然后将其转换为日期并按其过滤。这样的事情应该有效:

select * from table1
where cast(substr(p_image FROM 7 FOR 14) as date)
between '2013/12/01' and '2014/07/30'

Sample SQL Fiddle

可能有更有效的方法来做到这一点,但这应该让你有一个想法开始。

编辑:如果字符串可以变化,left(right(p_image, 18), 14)之类的内容应该有效。

答案 1 :(得分:1)

p_image中的日期采用YYYYMMDD格式,因此您可以将它们作为字符串进行比较。也就是说,没有理由将字符串转换为日期数据类型。

因此你可以这样做:

where substr(p_image, 8, 8) between '20131201' and '20140730'

如果日期的位置不固定但总是在/之后,您可以这样做:

where left(substring_index(p_image, '/', -1), 8) between '20131201' and '20140730'

答案 2 :(得分:0)

尝试一下它会起作用:

select * from `datetest` where substr(p_image, 8, 8) between '20131201' and '20140730'

Phpmyadmin的屏幕截图:

enter image description here