2014-03-30 91 views
2

请参见下表, 在此日期中,列类型为varchar not date。获取mysql中两个日期之间的记录

  |---------------------| 
      |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

+0

要使用'STR_TO_DATE(your_date_here, '%d /%M /%Y')'这个定投VARCHAR到的日期,这样就可以使它可查询。你的查询将是'选择日期,名称从tbl在哪里第一个日期和last_date之间的日期' –

+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') 
+0

很棒的回答!你抓到了列名,我在那一列上分开。 +1 – paqogomez

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') 
+0

:)我不是硬编码日期的粉丝,所以我想我只是评论,让OP找出一个方法来做日期作为变量 –

+0

@JohnRuddell,通常日期是专门设置的。 OP希望在两个日期之间。 – paqogomez

+1

我知道..我的意思是我不想在那里写日期,但让他弄清楚如何把变量放在那里。又名'gt'和'gt1' ---得让他们弄清楚一些东西,因为它可以帮助他们更好地学习:) –

0

可能是它会帮助你:)

查询=“SELECT * FROM表名其中date在''+ gt +'“和''+ gt1 +'''之间;

+0

如果您没有注意到OP说日期是varchar而不是日期时间,所以这wouldn没有工作。 –

+1

这也是java不是php所以它不会''查询' –

+0

谢谢,我已经编辑。 –

相关问题