首页 > 数据库 >mysql在开始与结束时间过滤出有效的价格且结束时间可以为空

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

时间:2023-03-02 23:47:13浏览次数:46  
标签:结束 生效 mysql 配置 start 时间 为空 time

背景

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

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

分情况

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

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

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

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

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

SQL

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
	)
)

  

本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。

首发链接:https://www.cnblogs.com/lingyejun/p/17174037.html

标签:结束,生效,mysql,配置,start,时间,为空,time
From: https://www.cnblogs.com/lingyejun/p/17174037.html

相关文章

  • Android Studio 之连接mysql实现添加功能
    昨天经过几个小时的奋斗,终于是连接上了mysql说实话过程十分艰辛,包括查ip换网络改权限改数据库的表改网络等等之后也尝试过在自己电脑上下另一个版本的mysql但是都以......
  • C#-EF Core使用MySQL数据库
    简介EntityFrameworkCore(EFCore)是微软推荐的基于.NETCore的应用程序数据访问技术。开源,轻量级,可扩展并且支持跨平台开发。EFCore是一种对象关系映射器(ORM),通过应用......
  • mysql数据库字符集和排序规则
    一般而言,我们可能选择utf8mb4这个字符集,而不选择utf8.这个是因为MySQL的utf8并不是真正的UTF8字符集,MySQL的utf8字符编码只有三个字节,节省空间但不能表达全部的UTF-8,只能......
  • [已解决]Android studio连接远程MySQL问题解决
    我电脑安装的是8.0的MySQL,导入使用的jar包是mysql-connector-java-5.0.71、首先先按照大佬的链接配置好一些东西,注意!已经安装8.0版本MySQL的保持原样就行,不用重新安装5.0......
  • mysql数据库的复制过虑器和mycat的安装使用
    今天分享的是mysql数据库的复制过滤器,其中包括GTID复制以及监控和维护,还有MYCAT的安装及其使用mycat使用过程中所需要注意的事项复制过滤器GTID复制GTID配置范例主服务器vim......
  • c# 判断字符串是否为空的效率问题
    循环1000000000次,stringa="100";stringb="200";for(inti=0;i<1000000000;i++)      {        if(string.Is......
  • mysql数据库二叉树
    假如Mysql的索引结构是二叉树的数据结构,比较理想的结构如下:如果主键是顺序插入的,则会形成一个单向链表,结构如下:  所以,如果选择二叉树作为索引结构,会存在以下缺点:......
  • mysql索引结构
    Mysql索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包括以下几种:B+Tree索引:最常见的索引结构,大部分存储引擎都支持B+Tree索引。Hash索引:底层数据结构是用Hash......
  • MySql左连接无法显示左表全部数据
    leftjoinon后边的条件只针对副表,如果要筛选主表必须写在where后。#问题查不出左表全部数据select*fromaleftjoinbona.id=b.idwhereb.name="kk";#解决......
  • 如何选择mysql的存储引擎
    在选择存储引擎时,应该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。InnoDB:是Mysql的默认存储引擎,支持事务、......