中易网

SQL根据要求如何操作整年数据精确到半小时

答案:2  悬赏:0  
解决时间 2021-11-08 13:27
  • 提问者网友:离殇似水流年飞逝
  • 2021-11-08 07:25
表字段:
[datetime] char(16) , --字符串 格式:2016-01-01 02:00
week smallint, --记录当天的星期:1 2 3 4 5 6 7
workrest smallint --记录 此时间开始1小时内的状态(工作时间1/非工作时间0)

需求:
1.一次性插入/更新一整年的时间,精确到半小时.
如 插入2016年的数据.
2.指定某星期某时间段为工作时间,workrest 标识为1.
如 星期五 00:30 至 02:00 为工作时间
星期六 21:30 至 22:00 为工作时间

结果:(2016-1-1为星期五; 2016-12-31为星期六)
datetime week workrest
2016-01-01 00:00 5 0
2016-01-01 00:30 5 1
2016-01-01 01:00 5 1
2016-01-01 01:30 5 1
2016-01-01 02:00 5 1
2016-01-01 02:30 5 0
…………………… . .
2016-12-31 21:00 6 0
2016-12-31 21:30 6 1
2016-12-31 22:00 6 1
2016-12-31 22:30 6 0
2016-12-31 23:00 6 0
2016-12-31 23:30 6 0
最佳答案
  • 二级知识专家网友:白日梦制造商
  • 2021-11-08 08:01
1、几个优化:
表设计:
- [DateTime] char(16) :修改为SmallDateTime
- Week :删除
- workrest :修改为WorkStat SmallInt

2、做个循环,变量每次增加半小时,然后插入表
SET @time = '2016-01-01 00:00'

SET @endTime = DateAdd(year, 1, @time)
WHILE @time < @endTime
BEGIN
--判断WorkStat

...

--插入

INSERT INTO ...

--下一时间点

SET @endTime = DateAdd(minute, 30, @time)

END
全部回答
  • 1楼网友:兮沫♡晨曦
  • 2021-11-08 09:00
没看懂什么意思?
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息