MySql生日闰月处理
1. 科普下润年:
先安装mysql官方示例数据库employees。没安装的可以参考:《MAC安装MYSQL官方示例数据库EMPLOYEE》
- 脚本操作:
-- 创建表employees create table employees like employees.employees; -- 将employees库的employees表数据插入到自己的表 insert into employeesselect * from employees.employees limit 0,10; -- 新增数据,生日为闰年1972-02-29 insert into employeesselect '10011','1972-02-29','Jiang','David','M','1990-2-20';
4. 查询用户和出生信息
- 语句:
-- 查询用户和出生信息 select concat(e.last_name, ' ', e.first_name) as Name, e.birth_date as BirthDate from employees e;
- 查询结果:
5. 实现
5.1 查询当前日期、当前日期和生日间隔的年数。
- 代码:
select concat(e.last_name, ' ', e.first_name) as Name, e.birth_date as BirthDay,(year(now())-year(e.birth_date)) diff,now() as today from employees e
- 结果:
5.2 查询当年的生日和下一年的生日。
- 代码:
select name,birthday,today,date_add(birthday, interval diff year) curr, -- 当年生日date_add(birthday, interval diff+1 year) next -- 下一年生日 from (select concat(e.last_name, ' ', e.first_name) as Name, e.birth_date as BirthDay,(year(now())-year(e.birth_date)) diff,now() as todayfrom employees e ) as a
- 查询结果
5.3 出生日期是29日,当年或下一年生日是28日,就将生日日期加1天
- 代码:
select name,birthday,today,date_add(curr, interval if(day(birthday)=29 && day(curr)=28, 1, 0) day) as cur, -- 闰年运行后的当年生日date_add(next, interval if(day(birthday)=29 && day(next)=28, 1, 0) day) as next -- 闰年运行后的下一年生日 from (select name,birthday,today,date_add(birthday, interval diff year) curr, -- 当年生日date_add(birthday, interval diff+1 year) next -- 下一年生日from (select concat(e.last_name, ' ', e.first_name) as Name, e.birth_date as BirthDay,(year(now())-year(e.birth_date)) diff,now() as todayfrom employees e) as a ) as b
- 查询结果:
5.4 最终代码,如果当年生日已经过了就返回下一年生日。
- 代码:
select name,birthday,if(cur>today, cur, next) as birth_day -- 如果当年生日大于当前日期,生日为今年,否则为下一年 from(select name,birthday,today,date_add(curr, interval if(day(birthday)=29 && day(curr)=28, 1, 0) day) as cur, -- 闰年运行后的当年生日date_add(next, interval if(day(birthday)=29 && day(next)=28, 1, 0) day) as next -- 闰年运行后的下一年生日from (select name,birthday,today,date_add(birthday, interval diff year) curr, -- 当年生日date_add(birthday, interval diff+1 year) next -- 下一年生日from (select concat(e.last_name, ' ', e.first_name) as Name, e.birth_date as BirthDay,(year(now())-year(e.birth_date)) diff,now() as todayfrom employees e) as a) as b ) as c
查询结果:
转载于:https://www.cnblogs.com/frank-quan/p/5793246.html
MySql生日闰月处理相关推荐
- php mysql生日提醒_基于AIML的PHP聊天机器人
php中文网最新课程 每日17点准时技术干货分享 chatbot:基于AIML的PHP聊天天机器人 本文章中讲介绍用PHP实现的一个小聊天机器人程序,用到了php操作dom相关的知识和mysql数据库 ...
- linux c 获取mac地址吗,Linux系统下用C语言获取MAC地址
最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下.如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址 ...
- MYSQL经典SQL之生日问题
根据用户的出生日期和当前日期,查询他的下一次生日 我们使用employees.employees表进行演示 如果你的mysql数据中没有此表,可参考http://blog.csdn.net/sun_x ...
- mysql date week_mysql weekday(date)/subdate(date,间隔天数)查询年龄/本月/周过生日
表信息 准备知识 select now(); #当前日期时间 select curdate (); #当前日期 select curtime(); #当前时间 weekday(date) #返回日期的 ...
- [MySQL]--gt;查询5天之内过生日的同事中的闰年2月29日问题的解决过程
前言: 上次写了查询5天之内过生日的同事中的跨年问题的解决过程,网址为:http://blog.csdn.net/mchdba/article/details/38952033 ,当中漏了一个闰年2月 ...
- MySQL查询7天内过生日的用户 查询生日是今天的用户 解决跨年问题
MySQL查询生日是今天的用户 select * from customer where MONTH(birthday) = MONTH(NOW()) and DAY(birthday) = DAY( ...
- mysql实现生日倒计时
首先获取今年和来年的生日日期,今年生日过了则计算下一年生日距离今天多少天:mysql默认没有29号时取28号. EG:客户表customer_info 查询生日倒计时N天内生日提醒 SELECT * ...
- MySQL和SQLite根据生日算年龄
MySQL和SQLite根据生日算年龄 MySQL: 1.select (date_format(from_days((to_days(now()) - to_days(birthday))),'%Y ...
- mysql身份证校验码_mysql正则表达式验证身份证,并获取年龄、生日、性别
mysql正则表达式验证身份证,并获取年龄.生日.性别 发布时间:2018-05-17 16:28, 浏览次数:4844 , 标签: mysql正则表达式,mysql验证身份证,REGEXP mysq ...
- mysql与oracle根据生日时间计算生日
mysql写法 SELECT user_id, birthday, CURDATE() nowaday,(YEAR(CURDATE())-YEAR(STR_TO_DATE(birthday,'%Y-% ...
最新文章
- PHP CURL方法,GETPOST请求。
- Daydream a Little+偶尔做一下白日梦
- c语言常量类型转换,c语言基础教程常量变量和类型转换,免费版.doc
- 搜索引擎是如何判断网站质量的?
- Introduction to Algorithm 6.3-3[Second Version]
- SAP Marketing cloud里的campaign管理
- 牛客挑战赛47 C 条件(Floyd bitset优化)
- 从此明白了卷积神经网络(CNN)
- java中 以下接口以键_java复习题
- Unable to instantiate default tuplizer
- 行级共享锁和行级排他锁_Power BI中的行级安全性简介
- ajax中xmlhttp.readyState==4 xmlhttp.status==200 是什么意思
- Postgresql去掉某个字段多余的空格
- html网页简单实现图片轮播效果,CSS3简单实现图片切换轮播
- 高德地图打开卫星地图(高德地图设置方法)
- c++:过滤多余的空格
- 【编程题】【Scratch一级】2019.12 飞向太空
- windows照片查看器解决方案
- 深度学习相关课程,MIT、李沐、吴恩达、
- cookies是什么