首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找下一个DateTime的MYSQL查询

查找下一个DateTime的MYSQL查询
EN

Stack Overflow用户
提问于 2014-11-12 17:55:53
回答 2查看 178关注 0票数 0

我正在编写一个执行特定任务的迷你调度程序。对于计算触发时间,我使用MYSQL。我很难写出其中一条问询。

找出比给定的时间更大的即时DateTime,

所需即期日期的日期应为给定日期的任何一天。

所需即时日期时间的时间(HH:MM:SS)部分应等于给定的时间。

示例:

(a)

如果给定的时间是(“星期一”,“星期三”,“SAT”),

如果时间是10:15

预定时间为2014-11-12 23:17:00

然后MYSQL应该返回2014-11-15 10:15:00。

(b)

给定天数:(“太阳”、“SAT”、“TUES”)

指定时间: 09:10:00

预定时间为2014-11-30 07:05:12

MYSQL应返回2014-11-30 09:10:00

(c)

给定的天数:('MON','THURS','SAT')

指定时间:11:00

预定时间为2014-12-29 11:55:12

MYSQL应返回2015-01-01 :00:00

(d)日数:(太阳、THURS、SAT)‘

预定时间为2014-02-27 18:15:00

给定时间15:15:00

MYSQL查询结果: 2014-03-01 15:15:00

(e)

日:(星期二,星期三,星期五)

日期: 2014-12-23 09:30:00

时间:08:00

预期结果:

2014-12-24 08:00:00

(f)

日:太阳,太阳,太阳

日期: 2014-07-31 10:10:00

时间: 06:07:08

预计决议: 2014-08-03 06:07:08

EN

回答 2

Stack Overflow用户

发布于 2014-11-16 19:37:39

使用工作日数字,0=Monday,6=Sunday:

代码语言:javascript
复制
set @day1=0;
set @day2=2;
set @day3=5;
set @time=time('10:15:00');
set @prevtime=timestamp('2014-11-12 23:17:00');

select if(weekday(@nexttime:=date_add(concat(date(@prevtime),' ',@time),interval if(@time>time(@prevtime),0,1) day)) in (@day1,@day2,@day3),@nexttime,if(weekday(@nexttime:=date_add(@nexttime,interval 1 day)) in (@day1,@day2,@day3),@nexttime,if(weekday(@nexttime:=date_add(@nexttime,interval 1 day)) in (@day1,@day2,@day3),@nexttime,if(weekday(@nexttime:=date_add(@nexttime,interval 1 day)) in (@day1,@day2,@day3),@nexttime,if(weekday(@nexttime:=date_add(@nexttime,interval 1 day)) in (@day1,@day2,@day3),@nexttime,if(weekday(@nexttime:=date_add(@nexttime,interval 1 day)) in (@day1,@day2,@day3),@nexttime,date_add(@nexttime,interval 1 day))))))) as nexttime;

如果您只有一个工作日,则可以将所有三个变量设置为相同的数目。

票数 1
EN

Stack Overflow用户

发布于 2014-11-12 21:05:21

您应该能够使用DAYNAME()、HOUR()、using ()和SECOND()函数来构造where子句:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

例如,如果性能不足,并且希望能够在DAYNAME (列名)上进行索引,则可以考虑对数据进行反错误化并分别存储DAYNAME值。不过,此时切换到Postgres可能更简单:http://www.postgresql.org/docs/9.1/static/indexes-expressional.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26893403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档