2013-01-22 161 views
-2

我有2张桌子。 client (client_id, client_name, client_lname)orders(Order_Id,Client_Id,Total_Amount,Order_Date,Order_Time,Order_Status) Order_Date和Order_Time的类型是varchar。 我必须在两个日期和时间之间显示记录。 我已经写了这个查询:如何在两个日期和时间之间选择记录?

SELECT 
    o.Order_Id, 
    c.client_name, 
    c.client_lname, 
    o.Total_Amount, 
    o.Order_Date, 
    o.Order_Time 
FROM orders AS o 
JOIN client AS c 
    ON o.Client_id = c.Client_id 
WHERE (o.Order_Date between '01/01/2013' and '22/01/2013') 
AND (o.Order_Time between '17:41:59' and '20:42:04') 
AND o.Order_Status='1' 
ORDER BY o.Order_Id 

为前:

Order_id Client_id Total_Amount    Order_Date  Order_Time Order_Status 
    120  32  60      01/01/2013  12:44:15 1 
121  32  60      01/01/2013  12:47:51 1 
122  32  90      01/01/2013  18:16:41 1 
127  32  60      01/01/2013  18:34:31 1 
128  32  90      01/01/2013  18:35:19 1 
129  32  120      19/01/2013  8:12:04  1 
130  32  90      19/01/2013  15:33:16 0 
131  33  90      19/01/2013  15:40:03 1 

我想从2013年1月1日12:40:00显示记录19/01/2013 09:00: 00。所以它应该显示6条。何查询将被写入

+0

MYSQL的默认日期格式是YYYY-MM-DD。这与你的问题有什么关系?什么错误正在返回? – Dawson

+0

不,我没有日期格式的问题。我保持日期和时间分开,我有取回记录根据时间 – shilpa

+4

的问题请'DESCRIBE客户端'和'DESCRIBE命令'的结果 – dnagirl

回答

0

首先,我改变了类型

order_date的日期和Order_Time时间。

然后我写了这个查询

select o.Order_Id,c.client_name,c.client_lname,o.Total_Amount,o.Order_Date,o.Order_Time from orders as o join client as c on o.Client_id=c.Client_id where DATE_ADD(o.Order_Date, INTERVAL o.Order_Time HOUR_SECOND) BETWEEN '2012-12-03 11:06:54' AND '2013-01-19 01:07:10' and o.Order_Status='1' order by o.Order_Id 

它的工作。那就是我期待的结果。 谢谢大家帮我解决我的问题。

0

尝试使用以下格式为您的日期: YYYY-MM-DD HH:MM:SS'01/01/2013'成为'2013-01-01 00:00:00'

For more info see

1

您需要在WHERE子句中合并日期和时间列。所有的

WHERE DATE_ADD(o.Order_Date, INTERVAL o.Order_Time HOUR_SECOND) 
    BETWEEN '2010-01-01 16:30:00' AND '2010-01-02 17:00:00' 
+0

感谢它帮助了我,并且您先回答了它:) – Aravind

相关问题