sql - 如何在 SQL 中从开始日期、开始时间和结束时间获取结束日期
问题描述
我正在尝试在 SQL 中查找事件的结束日期。以下是我拥有的数据示例。
EventDate EventStartTime EventEndTime
01/01/2015 14:17 16:50
04/01/2015 19:20 22:00
17/01/2015 22:30 03:35
17/02/2015 22:50 03:35
30/05/2015 23:30 01:50
01/06/2015 11:40 14:50
我想要的输出:
EventDate EventStartTime EventEndTime EventEndDate
01/01/2015 14:17 16:50 01/01/2015
04/01/2015 19:20 22:00 04/01/2015
17/01/2015 22:30 03:35 18/01/2015
17/02/2015 22:50 03:35 18/02/2015
30/05/2015 23:30 01:50 31/05/2015
01/06/2015 11:40 14:50 01/06/2015
如果有人知道如何编写代码,我将不胜感激。
解决方案
您可以通过case when
表达轻松实现。如果 EventEndDate 小于 EventStartDate 则在 EventDate 中添加一天,如果 EventEndDate 大于 EventStartDate 则选择 EventDate 作为 EventStartDate(根据您的输出)。
模式和插入语句:
create table events(EventDate date, EventStartTime time, EventEndTime time);
insert into events values('2015-01-01', '14:17', '16:50');
insert into events values('2015-01-04', '19:20', '22:00');
insert into events values('2015-01-17', '22:30', '03:35');
insert into events values('2015-02-17', '22:50', '03:35');
insert into events values('2015-05-30', '23:30', '01:50');
insert into events values('2015-06-01', '11:40', '14:50');
询问:
select EventDate,EventStartTime,EventEndTime,
(case when EventEndTime>=EventStartTime then EventDate else dateadd(day,1,EventDate) end)EventStartDate
from events
输出:
活动日期 | 事件开始时间 | 事件结束时间 | 事件结束日期 |
---|---|---|---|
2015-01-01 | 14:17:00.0000000 | 16:50:00.0000000 | 2015-01-01 |
2015-01-04 | 19:20:00.0000000 | 22:00:00.0000000 | 2015-01-04 |
2015-01-17 | 22:30:00.0000000 | 03:35:00.0000000 | 2015-01-18 |
2015-02-17 | 22:50:00.0000000 | 03:35:00.0000000 | 2015-02-18 |
2015-05-30 | 23:30:00.0000000 | 01:50:00.0000000 | 2015-05-31 |
2015-06-01 | 11:40:00.0000000 | 14:50:00.0000000 | 2015-06-01 |
db<>在这里摆弄
推荐阅读
- laravel - How can I access docker database Remotly?
- vue.js - ...mapState() 中定义的计算属性没有设置器
- java - 春季会话 jdbc
- javascript - 当我在 Javascript 中创建元素时,输入和标签之间的差距与原始 DOM 元素不同
- ios - Control AVAudioRecorder from bluetooth commands
- swift - 如何修复:“49:CreateDataFile 失败”
- jquery - Bootstrap div 隐藏其他网格时自动调整大小
- html - How to access buttons in a separate HTML file in the HTML file it is included in as header?
- grafana - How to filter grafana dashboard with greater than and less than operators?
- angular - 如何在 ngFor 中动态生成 mat-select