【发布时间】:2013-02-11 09:02:19
【问题描述】:
您好,我有一个如下所示的 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
输出应该是这样的:
预订室:
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
我的选择语句过滤太多,我看不到这两个日期之间的所有日期。
我错过了什么吗?
提前感谢您的帮助
【问题讨论】:
-
这些日期列的类型是什么,Datetime?
-
BESETZT_BIS是什么,你还没显示。 -
是的,它们是日期时间,抱歉 besezt_bis 是 TODATE。
-
你为什么要使用 varchars 作为日期时间?使用 sql-parameters 来避免 sql-injection 和转换问题。
标签: sql sql-server-2008 datetime select