在mysql中获取两个日期之间的记录

时间:2014-03-30 04:26:25

标签: java mysql sql

见下表, 在此日期列类型中,varchar不是日期。

           |---------------------|
           |date       |   name  |
           |---------------------|
           |23-5-2005  | babi    |
           |20-6-2005  | ram     |
           |12-5-2005  | jhon    |
           |1-5-2004   | babi    |
           |23-5-2005  | guru    |

知道我想在两个日期之间获得记录。

String gt = "12-5-2005";
String gt1 = "20-6-2005";
String query = ??;

如何编写查询以获取字符串gt和gt1之间的名称

4 个答案:

答案 0 :(得分:3)

SQL部分应该如下所示。

SELECT *
FROM 
    StackOverflow.`Table`
 WHERE STR_TO_DATE(`date`, '%d-%m-%Y') BETWEEN 
    STR_TO_DATE('12-5-2005', '%d-%m-%Y') AND STR_TO_DATE('20-6-2005', '%d-%m-%Y')

答案 1 :(得分:2)

和str_to_date之间的日期将会这样做。

感谢@John Ruddell的str_to_date语法。 :)

SELECT
  name,
  date
FROM table
WHERE STR_TO_DATE(`date`, '%d-%m-%Y') BETWEEN STR_TO_DATE("12-05-2005", '%d/%m/%Y') AND STR_TO_DATE("20-06-2005", '%d/%m/%Y')

答案 2 :(得分:0)

可能会帮助你:)

query ='从tableName中选择*,其中"'之间的日期+ gt +'"和"' + gt1 +'" &#39 ;;

答案 3 :(得分:-1)

您需要使用mysql STR_TO_DATE函数

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_str-to-date

String query = "select name from table 
where 
      table.date > STR_TO_DATE(gt, '%d/%m/%y')
      AND 
      table.date < STR_TO_DATE(gt1, '%d/%m/%y')";