前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql在开始与结束时间过滤出有效的价格且结束时间可以为空

mysql在开始与结束时间过滤出有效的价格且结束时间可以为空

作者头像
翎野君
发布2023-05-12 20:48:55
4820
发布2023-05-12 20:48:55
举报
文章被收录于专栏:翎野君翎野君

背景

在商品配置中设置有售卖时间,同一个商品可以设置多组不同的售卖时间,其中开始时间必填,结束时间可以不填,但是同一时刻只会有一个正在生效的时间区间。

现在要求我们针对时间进行过滤,查询出当前正在生效的时间配置,和将来会生效的时间配置。

分情况

要筛选出以上数据我们可以分为两种情况

1.将来生效的配置:start_time > now()

2.正在生效的配置:这里面根据结束时间是否设置为空我们可以分为两种情况

  2.1   配置了结束时间:start_time <= now() < end_time

  2.2  没有配置结束时间:当前时间大于开始时间(可能会过滤出多组配置),在这些配置中取最大的开始时间的那组配置。

SQL

代码语言:javascript
复制
SELECT
	*
FROM
	sku_sale_time_config
WHERE
	(
		start_time > (UNIX_TIMESTAMP() * 1000)
	)
OR (
	end_time IS NOT NULL
	AND start_time <= (UNIX_TIMESTAMP() * 1000)
	AND (UNIX_TIMESTAMP() * 1000) < end_time
)
OR (
	id IN (
		SELECT
			a.id
		FROM
			sku_sale_time_config a
		INNER JOIN (
			SELECT
				sku_id,
				max(start_time) AS start_time
			FROM
				sku_sale_time_config
			WHERE
				end_time IS NULL
			AND start_time <= (UNIX_TIMESTAMP() * 1000)
			GROUP BY
				sku_id
		) b ON a.sku_id = b.sku_id
		AND a.start_time = b.start_time
	)
)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
    • 分情况
      • SQL
      相关产品与服务
      云数据库 MySQL
      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档