MySQL,在格式化为字符串的两个日期之间获取数据

时间:2014-03-19 11:27:42

标签: php mysql sql

会感激一些帮助!

数据库表的设置如下:

id(varchar),
temp(varchar),   
humi(varchar),   
time(varchar)

然后我想用户输入ID,开始日期和结束日期。 问题是如何格式化时间列中的字符串,例如:18/03/14:21:52:36

用户不必输入时间,只需输入日期。

我认为可以用类似的方式做:

$result = mysql_query("SELECT * FROM $tbl WHERE id = '$id' AND time BETWEEN '$start%' AND '$stop%'");

但它不起作用。

date以这种方式存储时,是否可以使用sql查询执行此操作?

此致

。安德斯

编辑:

它不起作用,可能是因为我做错了= /

如果我这样做:

    $start= "13/02/14 : 12:17:34";
    $stop = "13/02/14 : 12:36:18";
    $result = mysql_query("SELECT * FROM $tbl WHERE id = '$id' AND tid BETWEEN '$start' AND '$stop'");

..数据将按预期显示

但是当我尝试使用str_to_date()时,它没有像我想的那样工作,或者它根本没有出现任何数据。

    $start= "13/02/14";
    $stop = "10/02/14";
    $id = "3E000004C6DB8D28";
    $result = mysql_query("SELECT * FROM $tbl WHERE id = '$id' AND tid BETWEEN str_to_date('$start%', '%d/%m/%Y') AND str_to_date('$stop%', '%d/%m/%Y')");

EDIT2:

第一次真的不知道我在做什么很奇怪,但现在它适用于这段代码:

$result = mysql_query("SELECT * FROM $tbl WHERE id = '$id' AND tid BETWEEN '$start' AND '$stop'");

1 个答案:

答案 0 :(得分:1)

您需要使用str_to_date()

WHERE id = '$id' AND
      tid BETWEEN str_to_date('$start%', '%d/%m/%Y') AND str_to_date('$stop%', '%d/%m/%Y')

显然,在将值插入查询之前,您也可以在应用程序中执行此操作。如果是这样,请将值转换为'YYYY-MM-DD'格式。