最新要闻
- 价格战会毁了国内汽车产业吗??
- 双胞胎兄弟婚前婚后判若四人引热议:网友感慨岁月是把杀猪刀
- 推动物业维修收费公开透明
- 漫威《死侍3》首曝剧照:休·杰克曼金刚狼回归 经典黄蓝制服
- Intel中国成都工厂20年了!三大顶尖技能于一身
- 苹果曾经的灵魂人物 做了个46万元的限量产品
- 50岁老妈退休后 决定和我一起玩DNF
- 买二手显卡怕是矿卡?我来教你如何分辨!
- 招商局港口(00144.HK):7月10日南向资金增持1.4万股
- 今日张翰演过的电影大全(张翰演过的电影)
- 数字人民币SIM卡硬钱包功能来了!断网、没电也能支付
- 印尼一工厂上百人失控 狂哭抽搐:原因哭笑不得
- 唯一全自研国产CPU!龙芯又干了件大事
- 辽宁夏联输青岛!刘维伟+吴乃群狂笑,李虎翼累坏,鄢手骐很郁闷
- 乘联会秘书长:签承诺书不是搞价格垄断、不许车企降价
- 现在的热只是预热:南方最热的时候要来了 新一轮降雨中止北方极端高温
广告
手机

英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌

宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 英国房地产因利率上升陷入困境 房价正以2011年来最快速度下跌
- 宁夏评选出上半年10名“宁夏好人” 95后消防员因敬业奉献入选
- 离婚时共同债务应该怎么处理?
- 华为云盘古大模型3.0正式发布
- 支持自动长文生成,WPS AI发布:基于大语言模型的智能办公助手
- 《街头霸王6》全球总销量突破200万份 卡普空再次为其玩家送上礼物
家电
选读SQL经典实例笔记04_日期运算(上)
(相关资料图)
1.年月日加减法
1.1.DB2
1.1.1.sql
select hiredate -5 day as hd_minus_5D, hiredate +5 day as hd_plus_5D, hiredate -5 month as hd_minus_5M, hiredate +5 month as hd_plus_5M, hiredate -5 year as hd_minus_5Y, hiredate +5 year as hd_plus_5Y from emp where deptno = 10
1.2.Oracle
1.2.1.sql
select hiredate-5 as hd_minus_5D, hiredate+5 as hd_plus_5D, add_months(hiredate,-5) as hd_minus_5M, add_months(hiredate,5) as hd_plus_5M, add_months(hiredate,-5*12) as hd_minus_5Y, add_months(hiredate,5*12) as hd_plus_5Y from emp where deptno = 10
1.3.PostgreSQL
1.3.1.sql
select hiredate - interval "5 day" as hd_minus_5D, hiredate + interval "5 day" as hd_plus_5D, hiredate - interval "5 month" as hd_minus_5M, hiredate + interval "5 month" as hd_plus_5M, hiredate - interval "5 year" as hd_minus_5Y, hiredate + interval "5 year" as hd_plus_5Y from emp where deptno=10
1.4.MySQL
1.4.1.sql
select hiredate - interval 5 day as hd_minus_5D, hiredate + interval 5 day as hd_plus_5D, hiredate - interval 5 month as hd_minus_5M, hiredate + interval 5 month as hd_plus_5M, hiredate - interval 5 year as hd_minus_5Y, hiredate + interval 5 year as hd_plus_5Y from emp where deptno=10
1.4.2.sql
select date_add(hiredate,interval -5 day) as hd_minus_5D, date_add(hiredate,interval 5 day) as hd_plus_5D, date_add(hiredate,interval -5 month) as hd_minus_5M, date_add(hiredate,interval 5 month) as hd_plus_5M, date_add(hiredate,interval -5 year) as hd_minus_5Y, date_add(hiredate,interval 5 year) as hd_plus_5DY from emp where deptno=10
1.5.SQL Server
1.5.1.sql
select dateadd(day,-5,hiredate) as hd_minus_5D, dateadd(day,5,hiredate) as hd_plus_5D, dateadd(month,-5,hiredate) as hd_minus_5M, dateadd(month,5,hiredate) as hd_plus_5M, dateadd(year,-5,hiredate) as hd_minus_5Y, dateadd(year,5,hiredate) as hd_plus_5Y from emp where deptno = 10
1.6.SQL 的ISO 标准语法里规定了INTERVAL关键字以及紧随其后的字符串常量
1.6.1.该标准要求INTERVAL值必须位于英文单引号内
1.6.2.PostgreSQL ( 和Oracle 9i数据库及其后续版本 ) 遵循了该标准
1.6.3.MySQL 则不支持英文单引号,略微偏离了标准
2.两个日期之间的天数
2.1.内嵌视图X和Y被用于分别获取WARD 和ALLEN 的HIREDATE
2.1.1.sql
select ward_hd, allen_hd from (select hiredate as ward_hd from emp where ename = "WARD" ) y, (select hiredate as allen_hd from emp where ename = "ALLEN" ) xWARD_HD ALLEN_HD----------- ---------22-FEB-1981 20-FEB-1981
2.1.1.1.因为X和Y之间没有任何连接条件,这里会产生笛卡儿积
2.1.1.2.X和Y都只有一条数据,因而即使没有连接条件也不会有问题,结果集最终只会有一行
2.2.DB2
2.2.1.sql
select days(ward_hd) - days(allen_hd) from ( select hiredate as ward_hd from emp where ename = "WARD" ) x, ( select hiredate as allen_hd from emp where ename = "ALLEN" ) y
2.3.Oracle
2.4.PostgreSQL
2.5.sql
select ward_hd - allen_hd from ( select hiredate as ward_hd from emp where ename = "WARD" ) x, ( select hiredate as allen_hd from emp where ename = "ALLEN" ) y
2.6.MySQL
2.7.SQL Server
2.8.sql
select datediff(day,allen_hd,ward_hd) from ( select hiredate as ward_hd from emp where ename = "WARD" ) x, ( select hiredate as allen_hd from emp where ename = "ALLEN" ) y
2.8.1.1.对于MySQL 而言,只需去掉DATEDIFF函数的第一个参数,并翻转ALLEN_HD和WARD_HD的顺序即可
3.两个日期之间的工作日天数
3.1.思路
3.1.1.计算出开始日期和结束日期之间相隔多少天(包含开始日期和结束日期)
3.1.2.排除掉周末,统计有多少个工作日(实际是在计算有多少条记录)
3.1.2.1.sql
select case when ename = "BLAKE" then hiredate end as blake_hd, case when ename = "JONES" then hiredate end as jones_hd from emp where ename in ( "BLAKE","JONES" )BLAKE_HD JONES_HD----------- ----------- 02-APR-198101-MAY-1981
3.1.2.2.sql
select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" )BLAKE_HD JONES_HD----------- -----------01-MAY-1981 02-APR-1981
3.1.2.2.1.使用了聚合函数MAX,其目的在于排除掉Null
3.1.3.T500表的ID列每一个值都等于前面一行的值加上1
3.1.3.1.sql
select x.*, t500.*, jones_hd+t500.id-1 from (select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= blake_hd-jones_hd+1BLAKE_HD JONES_HD ID JONES_HD+T5----------- ----------- ---------- -----------01-MAY-1981 02-APR-1981 1 02-APR-198101-MAY-1981 02-APR-1981 2 03-APR-198101-MAY-1981 02-APR-1981 3 04-APR-198101-MAY-1981 02-APR-1981 4 05-APR-198101-MAY-1981 02-APR-1981 5 06-APR-198101-MAY-1981 02-APR-1981 6 07-APR-198101-MAY-1981 02-APR-1981 7 08-APR-198101-MAY-1981 02-APR-1981 8 09-APR-198101-MAY-1981 02-APR-1981 9 10-APR-198101-MAY-1981 02-APR-1981 10 11-APR-198101-MAY-1981 02-APR-1981 11 12-APR-198101-MAY-1981 02-APR-1981 12 13-APR-198101-MAY-1981 02-APR-1981 13 14-APR-198101-MAY-1981 02-APR-1981 14 15-APR-198101-MAY-1981 02-APR-1981 15 16-APR-198101-MAY-1981 02-APR-1981 16 17-APR-198101-MAY-1981 02-APR-1981 17 18-APR-198101-MAY-1981 02-APR-1981 18 19-APR-198101-MAY-1981 02-APR-1981 19 20-APR-198101-MAY-1981 02-APR-1981 20 21-APR-198101-MAY-1981 02-APR-1981 21 22-APR-198101-MAY-1981 02-APR-1981 22 23-APR-198101-MAY-1981 02-APR-1981 23 24-APR-198101-MAY-1981 02-APR-1981 24 25-APR-198101-MAY-1981 02-APR-1981 25 26-APR-198101-MAY-1981 02-APR-1981 26 27-APR-198101-MAY-1981 02-APR-1981 27 28-APR-198101-MAY-1981 02-APR-1981 28 29-APR-198101-MAY-1981 02-APR-1981 29 30-APR-198101-MAY-1981 02-APR-1981 30 01-MAY-1981
3.1.3.1.1.Oracle语法
3.1.3.1.2.一旦生成了所需数目的行记录,接着使用CASE表达式来标记每一个日期是工作日或者周末(若是工作日返回1,周末则返回0)
3.1.3.1.3.使用聚合函数SUM来合计1的个数,并得到最终答案
3.2.DB2
3.2.1.sql
select sum(case when dayname(jones_hd+t500.id day -1 day) in ( "Saturday","Sunday" ) then 0 else 1 end) as days from ( select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= blake_hd-jones_hd+1
3.2.1.1.WHERE子句的话,BLAKE_HD和JONES_HD相减后又加上了1
3.2.1.2.SELECT列表里T500.ID减去了1,这是因为ID列的起始值是1,如果在JONES_HD基础上加上1就等同于从最终结果里排除掉了JONES_HD
3.3.Oracle
3.3.1.sql
select sum(case when to_char(jones_hd+t500.id-1,"DY") in ( "SAT","SUN" ) then 0 else 1 end) as days from ( select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= blake_hd-jones_hd+1
3.4.PostgreSQL
3.4.1.sql
select sum(case when trim(to_char(jones_hd+t500.id-1,"DAY")) in ( "SATURDAY","SUNDAY" ) then 0 else 1 end) as days from ( select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= blake_hd-jones_hd+1
3.5.MySQL
3.5.1.sql
select sum(case when date_format( date_add(jones_hd, interval t500.id-1 DAY),"%a") in ( "Sat","Sun" ) then 0 else 1 end) as days from ( select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= datediff(blake_hd,jones_hd)+1
3.6.SQL Server
3.6.1.sql
select sum(case when datename(dw,jones_hd+t500.id-1) in ( "SATURDAY","SUNDAY" ) then 0 else 1 end) as days from ( select max(case when ename = "BLAKE" then hiredate end) as blake_hd, max(case when ename = "JONES" then hiredate end) as jones_hd from emp where ename in ( "BLAKE","JONES" ) ) x, t500 where t500.id <= datediff(day,jones_hd-blake_hd)+1
关键词:
-
-
-
-
选读SQL经典实例笔记04_日期运算(上)
价格战会毁了国内汽车产业吗??
双胞胎兄弟婚前婚后判若四人引热议:网友感慨岁月是把杀猪刀
文心一言 VS 讯飞星火 VS chatgpt (57)-- 算法导论6.4 1题
推动物业维修收费公开透明
漫威《死侍3》首曝剧照:休·杰克曼金刚狼回归 经典黄蓝制服
Intel中国成都工厂20年了!三大顶尖技能于一身
苹果曾经的灵魂人物 做了个46万元的限量产品
50岁老妈退休后 决定和我一起玩DNF
买二手显卡怕是矿卡?我来教你如何分辨!
招商局港口(00144.HK):7月10日南向资金增持1.4万股
今日张翰演过的电影大全(张翰演过的电影)
数字人民币SIM卡硬钱包功能来了!断网、没电也能支付
印尼一工厂上百人失控 狂哭抽搐:原因哭笑不得
唯一全自研国产CPU!龙芯又干了件大事
辽宁夏联输青岛!刘维伟+吴乃群狂笑,李虎翼累坏,鄢手骐很郁闷
乘联会秘书长:签承诺书不是搞价格垄断、不许车企降价
现在的热只是预热:南方最热的时候要来了 新一轮降雨中止北方极端高温
高铁路过桂林乘客齐刷刷惊叹拍照:重峦叠嶂美得像幅画
温网突发!冰美人收退赛大礼,13号种子伤心落泪:非常沮丧退场!
opencv-python图像处理模块(一)
lol探险家带什么符文(lol探险家ez符文怎么搭配)
Intel 14代酷睿笔记本榨干牙膏!8+16满血核心全线出击
未来属于HDMI还是DP接口?联想:恐怕都不是 而是Type-C
AMD锐龙7000差点上昂贵的VC均热板!可惜 效果奇差无比
《王者荣耀》联名宝格丽!芈月璀璨新程皮肤公布:高贵女王
快使用双截棍 | 低码之连接器 元服务开发的奇门武器
2023年全国残疾人游泳锦标赛落幕 安阳市运动员“泳”夺2金1银2铜
两部门:支持房地产市场政策期限延长至2024年12月31日
日本北海道砒霜泄露:最新监测发现已超标2100倍
多色可选:雪中飞男士冰丝薄款弹力牛仔裤29元抄底
8999元 戴尔新款37.5寸带鱼屏上市:支持IPS Black技术
马斯克开着Cybertruck兜风 答应网友加炮塔
特斯拉呼吁收紧史上最严排放标准 与传统车企“对着干”
大涨!光伏逆变器概念股风云再起,又将谁主沉浮?
1份价格2个会员!京东PLUS + 芒果TV会员年卡98元限时购
坦克300撞废逆行哈弗H6 长城回应:不能只看受损去判定谁更胜一筹
承认落后!奥迪被曝求助中国车企:将购买纯电平台 缩短研发时间
OPPO官宣与理想合作:理想全系均支持手表无感车钥匙
8月量产!iPhone 15/15 Pro新配色颜值高:辨识度拉满了
PlayWright(十四)- 前置和后置
Threads 四天破亿,扎克伯格暴击马斯克
债市日报:7月10日
新造车自燃 气不过把电池子公司给卖了
3.99万起买“埃尔法” 国产新能源未奥BOMA上市:丰田能气笑
14代酷睿i7-14700K解锁4个小核心:跑分飙升18%
全球多地遭遇极端高温天气:正值冬季的南极洲也出现异常
官司已打几十场!加多宝回应被判赔偿广药集团3.17亿元 :立即上诉
中学生40度天坐爸爸车后座认真背书
领域知识图谱-中式菜谱知识图谱:实现知识图谱可视化和知识库智能问答系统(KBQA)
【财经分析】“初尝”退市整理期 蓝盾转债价格单日缩水76.74%
储蓄国债利率再降 3%成历史
【高端访谈·REITs生态圈】积极参与REITs市场 构建保租房业务发展新格局——访城投控股董事长张辰
《种地吧》文化输出了!韩版7月底翻拍:爱奇艺版豆瓣9分
奥迪欲购买国产电动平台 网友意见出奇一致:比亚迪e3.0
宝妈买3斤干冰降温家中秒变仙境 消防:处置不当有危险
微信又双叒叕推送更新 网友:无用的功能又增加了
激进的骁龙8 Gen2旗舰来了!李杰暗示一加Ace 2 Pro遥遥领先
中央网信办:加强“自媒体”管理,强化资质认证展示
数据图表解析:掌握关键指标,提升数据分析能力
共探AI大模型时代下的挑战与机遇,华为云HCDE与大模型专家面对面
线段树
胡锡进发文回应卸任环球时报职务:已在2021年年底退休时卸去所有公职
三伏天将开启,南方电网最高用电负荷逼近历史纪录
收评:创业板指冲高回落收涨1.37% 多只超跌行业龙头放量反弹
私家车高速抛锚 司机走下高速 满满一车西瓜太瞩目
5G鸿蒙生态手机!WIKO Hi畅享60 Pro发布:1799元起
网曝李咏女儿法图麦将作为演员出道:精通五种语言的学霸
安卓板皇!三星Galaxy Tab S9系列曝光:骁龙8 Gen2加持 售价过万
禁售传闻又起 NVIDIA特供中国显卡A800涨价:一周贵了2万块
使用 INFINI Console 实现 Elasticsearch 的增量数据迁移
我国发布13种矿产资源全球储量评估数据
记者手记:未来已来,人类如何应对人工智能挑战
马斯克发文称要买下抖音 删掉魔性BGM?真相来了
热疯了!专家预测:今年全球还将多次打破高温纪录
年轻人第一款奢侈品 《王者荣耀》首款数字珠宝皮肤今晚发布
48小时留香 1颗=8盖:立白小苍兰洗衣凝珠0.39元/颗大促
全球5G专利排名:华为第一!小米进步神速 4次对华为提专利无效宣告请求
阿里云通义大模型家族迎来新成员,通义万相已开启定向邀测
和评理 | 北约已搞乱欧洲 不要再搞乱亚洲
广州一特斯拉闯红灯撞上电瓶车致1死 躲过一劫路人:看到特斯拉都有恐惧
因手机和电脑需求低迷 存储芯片还得跌?海外大厂亏麻了
珠海长隆海洋王国标准票包含什么?
吴京、斯坦森双雄出演:《巨齿鲨2》国风海报公布
中暑身亡导游当天工作情况披露:选了一条1.5公里步行路线
国家铁路半年发送电煤7.77亿吨:库存能用30.6天
300元网购三星4TB SSD后:通电测速无语到家!天坑
老人修空调花近5000元:疑被诈骗
去参加星光大道火的组合有哪些 星光大道走红的组合
知识库
10个安全问题带你了解OWASP 定义的大模型应用
二分查找
语音软件源码开发搭建,好友管理功能剖析
2023中酒展丨权图:酱酒还有近一倍的增长空间 但增速会进入合理化阶段
悬赏千万的狗已找到 主人给了5000引热议:手机已关机 联系不上
小学生开始去胖东来抢座位了:有空调 免费看书
搭载7.8英寸彩色水墨屏:MobiScribe推出Wave Color阅读器
1499元起 小米电视EA系列更新:顶配75寸4K屏
原价439元:361° 篮球鞋2折狂促 89元起到手
杨超:下半年A股仍处于布局时点 震荡上行概率较大