2013-03-25 131 views
-1

请帮帮我。我有表A日期格式为DD/MM/YY和时间格式为hh:mm:ss的AM/PM查询SQL日期和时间(CLOSED)

╔══════════╦═════════════╦═════════════╦═════════╗ 
║ DATE ║ TIME  ║ PHONE ║ MESSAGE ║ 
╠══════════╬═════════════╬═════════════╬═════════╣ 
║ 25/09/07 ║ 01:57:55 PM ║ 62856979898 ║ Tes a ║ 
║ 25/09/07 ║ 04:56:51 PM ║ 62856123467 ║ Tes B ║ 
╚══════════╩═════════════╩═════════════╩═════════╝ 

如何查询找到数据,其中时间之间的日期。

+1

如何你能拿一个日期,并与时间比较吗? – hjpotter92 2013-03-25 08:43:18

+0

什么类型是日期字段? – Uby 2013-03-25 08:43:20

+0

http://stackoverflow.com/questions/4125931/mysql-combining-date-and-time-column-into-a-time-stamp – 2013-03-25 08:43:59

回答

4

这是在数据库中没有正确存储数据类型的缺点之一。日期应保存为DATEDATETIME

如果使用的是MySQL,您可以使用STR_TO_DATE它转换成字符串日期,

SELECT * 
FROM tableName 
WHERE STR_TO_DATE(CONCAT(date, ' ', time), '%d/%m/%y %h:%i:%s %p') 
     BETWEEN '2007-09-25 13:00:00' AND '2007-09-25 14:00:00' 

输出

╔══════════╦═════════════╦═════════════╦═════════╗ 
║ DATE ║ TIME  ║ PHONE ║ MESSAGE ║ 
╠══════════╬═════════════╬═════════════╬═════════╣ 
║ 25/09/07 ║ 01:57:55 PM ║ 62856979898 ║ Tes a ║ 
╚══════════╩═════════════╩═════════════╩═════════╝ 

当前的设计的一些缺点:

  • 不能直接比较的日期和时间
  • 不能使用索引
  • 等...
+1

+1好主意:) – 2013-03-25 08:49:28

0

使用BETWEEN关键字

"SELECT * FROM table_A WHERE date BETWEEN '" . $from_date . "' AND '" . $to_date . "'" 
+0

那些看起来不像日期字段。另外,最好使用准备好的语句。 – Uby 2013-03-25 09:18:47