2013-01-22 215 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

相關問題