【发布时间】:2021-08-05 17:47:11
【问题描述】:
我有一个表,其中 TxDate 列作为时间戳列。我需要从TxDate 之间的表中选择记录:
- 日期范围(
@StartDate和@EndDate)和 - 时间范围(
@StartTime和@EndTime)。 这里@StartTime大于@EndTime。
输入:
@StartDate = '2021-02-05'
@EndDate = '2021-02-07'
@StartTime = '20:30:00'
@EndTime = '03:30:00'
这里我需要输入日期/时间之间TxDate 的表中的所有记录
实际表中的记录:
| TxDate | BDate | Item |
|---|---|---|
| 2021-02-05 06:00:00.000 | 2021-02-05 | ABC |
| 2021-02-05 13:10:00.000 | 2021-02-05 | ABC |
| 2021-02-05 23:40:00.000 | 2021-02-05 | ABC |
| 2021-02-06 01:40:00.000 | 2021-02-05 | ABC |
| 2021-02-06 05:50:00.000 | 2021-02-05 | ABC |
| 2021-02-06 06:00:00.000 | 2021-02-06 | ABC |
| 2021-02-06 13:10:00.000 | 2021-02-06 | ABC |
| 2021-02-06 23:40:00.000 | 2021-02-06 | ABC |
| 2021-02-07 01:40:00.000 | 2021-02-06 | ABC |
| 2021-02-07 05:50:00.000 | 2021-02-06 | ABC |
| 2021-02-07 10:30:00.000 | 2021-02-07 | ABC |
| 2021-02-08 02:30:00.000 | 2021-02-07 | ABC |
| 2021-02-08 11:00:00.000 | 2021-02-08 | ABC |
所需输出:
| TxDate | BDate | Item |
|---|---|---|
| 2021-02-05 23:40:00.000 | 2021-02-05 | ABC |
| 2021-02-06 01:40:00.000 | 2021-02-05 | ABC |
| 2021-02-06 23:40:00.000 | 2021-02-06 | ABC |
| 2021-02-07 01:40:00.000 | 2021-02-06 | ABC |
| 2021-02-08 02:30:00.000 | 2021-02-07 | ABC |
【问题讨论】:
-
在您的示例中,您应该有两条记录作为结果。没关系 ??前两条记录
-
StartTime是否只与StartDate相关,而EndTime仅与EndDate相关,还是意味着无论何时,时间都必须在StartTime和@987654338 之间@?如果是后者,它是如何工作的,这是否意味着“在 3:30 之前或 20:30 之后”? -
我已经更新了细节以便更好地理解,如果您还有任何问题,请告诉我
标签: sql-server