计算特定时间之间的天数

时间:2016-03-28 22:02:26

标签: sql datetime

我的表格如下。我需要找到承认日期从晚上9:30到下一天下午1:00之间的所有记录。我不能硬编码日期和时间,因为它可以跨越多天。

    Admit Date
2015-12-30 09:51:16.000
2015-12-30 10:15:00.000
2015-12-30 10:51:00.000
2015-12-30 11:19:00.000
2015-12-30 12:12:00.000
2015-12-30 12:28:00.000
2015-12-30 12:36:00.000
2015-12-30 13:27:54.000
2015-12-30 14:03:00.000
2015-12-30 14:10:00.000
2015-12-30 14:21:00.000
2015-12-30 14:37:00.000
2015-12-30 15:42:00.000
2015-12-30 15:56:00.000
2015-12-30 17:43:00.000
2015-12-30 17:47:51.000
2015-12-30 18:04:00.000
2015-12-30 18:40:00.000
2015-12-30 18:45:02.000
2015-12-30 20:44:00.000
2015-12-30 20:52:00.000
2015-12-30 21:23:00.000
2015-12-30 22:26:00.000
2015-12-30 23:17:00.000
2015-12-31 01:37:00.000
2015-12-31 08:20:00.000
2015-12-31 09:17:00.000
2015-12-31 09:53:07.000
2015-12-31 10:15:00.000
2015-12-31 12:01:00.000
2015-12-31 12:09:00.000
2015-12-31 12:12:00.000
2015-12-31 12:17:18.000
2015-12-31 12:18:00.000
2015-12-31 12:23:00.000
2015-12-31 12:23:00.000
2015-12-31 12:40:00.000
2015-12-31 12:53:00.000
2015-12-31 13:09:40.000
2015-12-31 13:28:00.000
2015-12-31 13:38:12.000
2015-12-31 13:39:01.000
2015-12-31 14:51:29.000
2015-12-31 14:57:11.000
2015-12-31 16:06:00.000
2015-12-31 16:13:00.000
2015-12-31 17:22:00.000
2015-12-31 18:07:00.000
2015-12-31 18:24:02.000
2015-12-31 19:38:00.000
2015-12-31 19:53:00.000
2015-12-31 21:01:00.000
2015-12-31 21:26:00.000
2015-12-31 21:46:00.000
2015-12-31 22:20:00.000
2015-12-31 23:03:00.000
2015-12-31 23:34:00.000
2016-01-01 00:16:00.000
2016-01-01 01:03:00.000
2016-01-01 01:19:00.000
2016-01-01 01:30:00.000
2016-01-01 03:21:00.000
2016-01-01 05:33:00.000
2016-01-01 06:07:00.000
2016-01-01 08:03:00.000
2016-01-01 08:33:00.000
2016-01-01 08:35:00.000
2016-01-01 09:09:00.000
2016-01-01 09:42:00.000
2016-01-01 10:02:00.000
2016-01-01 11:12:08.000
2016-01-01 12:06:00.000
2016-01-01 12:47:00.000
2016-01-01 13:11:31.000
2016-01-01 14:22:00.000
2016-01-01 16:49:00.000
2016-01-01 18:39:00.000
2016-01-01 18:54:00.000
2016-01-01 19:16:00.000
2016-01-01 19:51:00.000
2016-01-01 20:15:00.000
2016-01-01 20:27:00.000
2016-01-01 20:27:00.000
2016-01-01 21:06:00.000
2016-01-01 21:06:00.000
2016-01-01 21:39:00.000
2016-01-01 21:58:00.000
2016-01-01 22:15:00.000
2016-01-01 22:16:00.000
2016-01-01 22:43:00.000
2016-01-01 22:54:00.000
2016-01-01 23:06:00.000
2016-01-01 23:10:00.000  

我需要能够在多天内获取数据

2 个答案:

答案 0 :(得分:1)

这将为您提供列表中所有日期,其中时间是晚上9:30或更晚,或下午1点或更早(基本上是在这两次之间发生的日期):

SELECT admit_date
FROM admit
WHERE CONVERT(time,admit_date) >= CONVERT(time,'21:30') 
OR CONVERT(time,admit_date) <= CONVERT(time,'13:00')

您还可以在案例陈述中使用此逻辑来生成一些其他指标,以帮助您对这些日期进行分类。

答案 1 :(得分:0)

您可以对某些列进行CTE去标记以映射值,对于CTE外部,您可以选择此值。

此外,您可以使用LAST函数或Oracle LAST_VALUE函数并执行Agregate函数来提取值,直到最后一列。

我希望能帮助你。