2016-03-08 75 views
0

我正在使用Microsoft Access和SQL查詢兩次之間選擇數據?

我試圖從表中選擇兩次之間的記錄:6:00:00 PM和11:59:00 PM。

現在我有

SELECT RESERVATION.Reservation_ID, SEAT_RESERVED.Reservation_Time 
FROM RESERVATION 
INNER JOIN SEAT_RESERVED ON RESERVATION.Reservation_ID = SEAT_RESERVED.Reservation_ID 
WHERE timestamps SEAT_RESERVED.RESERVATION_TIME between ('6:00:00PM' and '11:59:00PM'); 

但這不工作和錯誤說,它缺少一個運營商。請幫助

+0

請解釋你的WHERE條款。什麼是'時間戳記'? –

+0

錯誤在您的WHERE子句中。時間戳SEAT_RESERVED ...等沒有任何意義。 – Duston

回答

1

它看起來像你有兩個表,只有2個不同的列。把它全部放在一張桌子裏將是一個更好的做法。但是,如果您確實希望保留表格,這就是您的模式應該看起來像

請確保您的預訂時間類型爲datetime,timetimestamps。就你而言,它看起來像你正在使用時間戳選擇器。

CREATE TABLE reservation(
    reservation_id INT PRIMARY KEY AUTO_INCREMENT, 
    reservation_name VARCHAR(10) 
); 

CREATE TABLE seat_reserved(
    reservation_id INT, 
    reservation_time TIMESTAMP 
); 

確保您將正確的數據插入到表格中。

INSERT INTO reservation(reservation_name) 
VALUES("George"), ("Roger"), ("John"), ("Lucas"); 

INSERT INTO seat_reserved(reservation_id, reservation_time) 
VALUES(1, "2016-03-08 17:00:00"), 
     (2, "2016-03-08 18:00:00"), 
     (3, "2016-03-08 19:30:00"), 
     (4, "2016-03-08 12:00:00"); 

注意我們插入到reservation_time列的值。

數據類型timestamps以24小時格式返回日期和時間。

要選擇時間戳數據類型的時間部分,可以使用TIME函數。

http://www.techonthenet.com/access/functions/date/time.php

SELECT RESERVATION.Reservation_ID, SEAT_RESERVED.Reservation_Time 
FROM RSERVATION 
INNER JOIN SEAT_RESERVED ON RESERVATION.Reservation_ID = SEAT_RESERVED.Reservation_ID 
WHERE TimeValue(SEAT_RESERVED.RESERVATION_TIME) BETWEEN #18:00:00# AND #23:59:00# 

我也去掉了timestamps部分在WHERE子句中,因爲這是不正確的語法。

我創建了一個搗鼓你與

http://sqlfiddle.com/#!9/83bcf5/6/0

+0

謝謝你的工作,但我該如何指定AM或PM?我在'6:00:00'和'11:00:00pm'之間放置了WHERE HOUR(SEAT_RESERVED.RESERVATION_TIME),它顯示了從12PM到1159 PM的所有內容 – Hailey

+0

'HOUR(SEAT_RESERVED.RESERVATION_TIME)18和23之間' – HansUp

+0

完美的作品, 非常感謝你! – Hailey

1
SELECT RESERVATION.Reservation_ID, SEAT_RESERVED.Reservation_Time 
FROM RESERVATION 
INNER JOIN SEAT_RESERVED ON RESERVATION.Reservation_ID = SEAT_RESERVED.Reservation_ID 
WHERE TimeValue(SEAT_RESERVED.Reservation_Time) >= TimeValue ('6:00:00PM') 
AND TimeValue(SEAT_RESERVED.Reservation_Time) <= TimeValue ('11:59:00PM'); 

SELECT RESERVATION.Reservation_ID, SEAT_RESERVED.Reservation_Time 
FROM RESERVATION 
INNER JOIN SEAT_RESERVED ON RESERVATION.Reservation_ID = SEAT_RESERVED.Reservation_ID 
WHERE TimeValue(SEAT_RESERVED.Reservation_Time) BETWEEN TimeValue ('6:00:00PM') 
AND TimeValue ('11:59:00PM'); 

這兩個查詢返回你所需要的玩耍。問題是你需要where子句來使SEAT_RESERVED.Reservation_Time不是時間戳。要指出的另一件事是將查詢中指定的值轉換爲時間值。使用TimeValue函數將允許您將特定文本轉換爲時間值,從而允許您在特定時間(包括分鐘和秒)之間進行查詢。

希望你覺得這有幫助。

+0

好的!感謝您指出了這一點 !編輯答案 – ShrtTth