[英]How to select a row where from and to date are exist in SQL DB
你好我有一個SQL表,看起來像這樣:
RESERVATIONROOM:
ID NAME FROMDATE TODATE
5 Room1 2012-11-29 11:46:00.000 2012-11-29 12:45:00.000
6 Room1 2012-11-29 12:55:00.000 2012-11-29 14:20:00.000
7 Room1 2012-11-29 15:00:00.000 2012-11-29 16:42:00.000
我有一個來自和迄今為止,我想選擇這兩個日期之間的所有房間。
例:
表格日期:2012-11-29 11:50:00.000
迄今為止:2012-11-29 13:46:00.000
輸出應該是這樣的:
RESERVATIONROOM:
ID NAME FROMDATE TODATE 5 Room1 2012-11-29 11:46:00.000 2012-11-29 12:45:00.000 6 Room1 2012-11-29 12:55:00.000 2012-11-29 14:20:00.000
這是我到目前為止:
SELECT*
FROM RESERVATIONROOM
WHERE FROMDATE BETWEEN CONVERT(DATETIME,'2012-11-29 11:50:00.000',101) AND CONVERT(DATETIME,'2012-11-29 13:46:00.000',101)
AND TODATE < CONVERT(DATETIME,'2012-11-29 13:46:00.000',101)
ORDER BY FROMDATE ASC
我的選擇語句過濾得很多,我無法看到這兩個日期之間的所有日期。
我錯過了什么嗎?
在此先感謝您的幫助
你為什么要使用varchars作為日期時間? 使用sql-parameters來避免sql注入和轉換問題。
假設參數已經是datetimes
。
您可以在兩個列上使用BETWEEN
作為兩個參數:
SELECT *
FROM RESERVATIONROOM
WHERE @dateFrom BETWEEN FROMDATE AND TODATE
OR @dateTO BETWEEN FROMDATE AND TODATE
(我不確定你在Where
-clause中是否需要AND
或OR
,你想包含交叉點嗎?)
很抱歉轉換評論,我以為是varchar轉換的datetime。 但是從您輸入的日期開始,您給出了兩個日期和表格,每個房間有兩個日期。 這實際上是混淆了日期和日期的內容。 從您的示例輸出中,您應該使用or
在兩個過濾器之間。 看這里 祝好運。
select * from table1
where (convert(datetime, @from, 101) between fromdate and todate)
or (convert(datetime, @to, 101) between fromdate and todate)
代替
WHERE FROMDATE BETWEEN CONVERT(DATETIME,'2012-11-29 11:50:00.000',101) AND CONVERT(DATETIME,'2012-11-29 13:46:00.000',101)
采用
WHERE FROMDATE > CONVERT(DATETIME,'2012-11-29 11:50:00.000',101)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.