数据库语句优先显示指定的数据以及数据库获得系统时间

本文介绍了如何在SQL查询中优先展示指定数据,通过CASE WHEN语句实现根据时间条件的排序。同时,讲解了MySQL获取当前日期时间的几种方法,如NOW(), CURDATE(), CURTIME()等,并通过示例展示了它们的用法和区别。
摘要由CSDN通过智能技术生成

实践情况

前两天被要求做一个简单的查询语句,功能是显示值班信息,但是要求优先显示当天的值班信息,在按照时间顺序显示其他值班信息。

1. 如何优先展示指定的数据

// An highlighted block
select
   *
    from
   a
    ORDER BY
    CASE
    WHEN c.duty_start_time = CURRENT_DATE() THEN 0 
    ELSE 1
    END,
    c.duty_end_time DESC
   

使用case when 语句可以优先展示c.duty_start_time = CURRENT_DATE()的数据如果还有其他结构就要写成

// An highlighted block
select
   *
    from
   a
    ORDER BY
    CASE
    WHEN c.duty_start_time = CURRENT_DATE() THEN 0
     WHEN c.duty_end_time = CURRENT_DATE() THEN 1
    ELSE 2
    END,
    c.duty_end_time DESC
   

这样的话,会优先展示开始时间等于指定时间的信息,在展示结束时间等于指定时间的信息,依此类推

2. 数据库如何获取系统时间

MySql处理日期和时间函数众多,简单介绍3类获取当前日期时间时常用函数:

1.查询开始时的当前时间戳. current_timestamp -> timestamp with time zone
2.查询开始时的当前日期. current_date -> date
3.查询开始时的当前时间. current_time -> time with time zone

获取当前日期时间NOW

表示当前日期时间的主要有NOW()和SYSDATE()
NOW()返回是语句开始执行的时间,SYSDATE()返回是动态实时时间。
在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。
NOW()在整个语句执行过程中都不会变化。
NOW()返回日期时间格式取决于数据库设置的时区。

SELECT SYSDATE(),SLEEP(2),NOW(2),SYSDATE()
	  SYSDATE()	             NOW(2)	       
	#2020-06-06 17:52:0 0	# 2020-06-06 17:52:08.89

获取日期CURDATE

CURRENT_DATE and CURRENT_DATE() are synonyms for CURDATE().

SELECT CURDATE(),CURRENT_DATE,CURRENT_DATE(),CURRENT_DATE()+0
#CURDATE()	CURRENT_DATE	CURRENT_DATE()	CURRENT_DATE()+0
#2020-06-06	2020-06-06	2020-06-06	20200606

获取时间CURTIME

CURRENT_TIME and CURRENT_TIME() are synonyms for CURTIME().

SELECT CURTIME(),CURRENT_TIME,CURRENT_TIME(),CURRENT_TIME()+0
# CURTIME()	CURRENT_TIME	CURRENT_TIME()	CURRENT_TIME()+0
# 17:37:14	17:37:14	17:37:14	173714

我选择的是CURRENT_DATE()类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值