首页 > 数据库 >SQL语句——日期题目总结

SQL语句——日期题目总结

时间:2024-10-17 10:48:19浏览次数:9  
标签:语句 题目 SQL INTERVAL ADD 日期 CURDATE YEAR orders

第一题:查询本周考试的学生成绩。
  1.  DATA_ADD()语法:date就是要操作的日期,INTERVAL就是要间隔的日期 expr可以写数字,unit用来写单位,比如DATE_ADD(CURDATE(), INTERVAL 7 DAY)就是当前日期加上一星期。
  2. CURDATE()就是当前日期 ,
  3. 格式:
  4. DATE_ADD(date, INTERVAL expr unit)

代码解释:就是当前日期后面追加七天单位用DAY,用between判断

select * from result where result.ExamDate

BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 7 DAY);
第二题:查询未来3个月要过生日的学生
  1. 我们要使用between and 来判断日期
  2. 月份的加减不能够简单使用+ 或 - ,当月份为11月加三个月就变成了14月,这显然不合理,所以我们使用DATA_ADD()
  3.  MONTH(date)就是把日期放进去能够取出月份
  4. 我们以表student为例子,BornDate是出生日期

思路就是,将生日加年份,加到今年,然后就可以使用between and来进行判断在不在现在和未来三个月之间

SELECT * 
FROM student a 
WHERE DATE_ADD(a.BornDate, INTERVAL (YEAR(CURDATE()) - YEAR(a.BornDate)) YEAR) 
BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 3 MONTH);                      

第三题:找出在特定日期(如'2023-04-01')之后每个客户首次下单的日期

-- - 输出客户ID和首次下单日期。

-- - 如果客户在指定日期之后没有下过单,则不显示该客户。

1.要找到首次下单日期使用MIN()函数,这些函数需要和group by一起使用

2.'2023-04-01'这个日期之后可以使用大于号小于号:order_date > '2023-04-01'

  select MIN(orders.order_date) as '下单日期',orders.customer_id as '客户id' from orders
     where orders.order_id in (
     select orders.order_id FROM orders
     where orders.order_date > '2023-04-01' )
     GROUP BY orders.customer_id;
第四题:查询下周过生日的学生
 

这个题和第一题:查询本周考试的学生成绩。不一样,因为这个是生日,涉及到年,思路和第二题一样

也是通过ADDDATE(s_birth,INTERVAL (YEAR(CURDATE())- YEAR(student.s_birth)) YEAR)使生日的年份变成和当前时间一样的年份,然后通过between and来判断


select * from student where ADDDATE(s_birth,INTERVAL (YEAR(CURDATE())- YEAR(student.s_birth)) YEAR) BETWEEN CURDATE() AND ADDDATE(CURDATE(),INTERVAL 7 DAY);

标签:语句,题目,SQL,INTERVAL,ADD,日期,CURDATE,YEAR,orders
From: https://blog.csdn.net/qq_62859013/article/details/142999120

相关文章

  • MySQL的server层和存储引擎层是如何交互的(处理SQL)
    假设表结构createtabletest(aintnotnull,bintnotnull,cintnotnull,primarykey(a),uniquekeyidx_b(b))Engine=InnoDB;select*fromtestwhereb<2andc<3;MySQL服务层会将SQL解析,将where条件交给存储引擎层。存储引擎层拿到where条件后,发现正好......
  • sql-labs靶场第十五关测试报告
    目录一、测试环境1、系统环境2、使用工具/软件二、测试目的三、操作过程1、寻找注入点2、注入数据库①寻找注入方法②爆库,查看数据库名称③爆表,查看security库的所有表④爆列,查看users表的所有列⑤成功获取用户名和密码信息3、sqlmap注入方法①爆库②爆表③爆......
  • 力扣刷题_SQL50题
    高频SQL50题(基础版)-学习计划-力扣(LeetCode)全球极客挚爱的技术成长平台602.好友申请II:谁有最多的好友题目:编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。生成的测试用例保证拥有最多好友数目的只有1个人。CreatetableIfNotExistsRequestAccepte......
  • mysql 8查看锁阻塞
    mysql8:事务:information_schema.innodb_trx所有请求中和已经持有的锁:performance_schema.data_locks存在锁等待即阻塞的信息:performance_schema.data_lock_waitsdata_locks:该表显示了所有请求中和已经持有的锁。列名 含义ENGINE 存储引擎ENGINE_LOCK_ID 锁的IDENGINE_T......
  • MySQL(python开发)——(5)聚合操作
    MySQL(python开发)——(1)数据库概述及其MySQL介绍MySQL(python开发)——(2)数据库基本操作及数据类型MySQL(python开发)——(3)表数据的基本操作,增删改查MySQL(python开发)——(4)高级查询语句MySQL聚合操作聚合操作指的是在数据查找基础上对数据的进一步整理筛选行为,实际上聚合......
  • 力扣面试_SQL50题
    高频SQL50题(基础版)-学习计划-力扣(LeetCode)全球极客挚爱的技术成长平台585.2016年的投资CreateTableIfNotExistsInsurance(pidint,tiv_2015float,tiv_2016float,latfloat,lonfloat);TruncatetableInsurance;insertintoInsurance(pid,tiv_2015,......
  • MySQL数据的导入
    我们在帖子MySQL数据的导出-brucexia-博客园(cnblogs.com)中讲了MySQL数据的导出,本文讲讲解MySQL数据的导入。MySQL数据的导入包括使用LOADDATAINFILE命令导入和使用mysqlimport命令导入。使用LOADDATAINFILE方式导入文本文件MySQL允许将数据导出到外部文件,也可以从外......
  • MySql和简单的sql语句
    安装数据库今天进行mysql的安装学习了简单sql语句mysql去官网安装mysql的社区版的八点几版本,安装之后需要设置密码,执行mysql-uroot-p,输入密码就可以进入mysql,使用exit;退出SQL语句分为DDL,DML,DQL,DCL,几大类,creatbasedata......
  • MySQL 通过 Next-Key Locking 技术(行锁+间隙锁)避免幻读问题
    在MySQL中,InnoDB引擎通过Next-KeyLocking技术来解决幻读问题。幻读是一种事务并发问题,通常出现在RepeatableRead隔离级别下的范围查询操作中。幻读的现象是,事务在查询时多次执行相同的范围查询,但由于其他事务的插入或删除操作导致结果不一致,出现“幻觉”一样的记录。Next-KeyL......
  • 使用MySQL之排序检索数据
    排序数据子句(clause):SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。子句的例子有SELECT语句的FROM子句等。为了明确地排序用SELECT语句检索出的数据,可使用ORDERBY子句。ORDERBY子句取一个或多个列的名字,据此对输出进行排序......