我与旧事归于尽,来年依旧迎花开~

2021/12/31 23:12:39

本文主要是介绍我与旧事归于尽,来年依旧迎花开~,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

我与旧事归于尽,来年依旧迎花开。

剑谱最终页,无爱即是神。

岁末将至,祝我得偿所愿,平安喜乐!

描述:

今天在整理日志的时候 突然发现时间过得好快,一转眼的功夫,2021年已经从年前到了年尾,而口罩也是始终如一的带着,丝毫不敢懈怠~(积极响应国家号召,感慨疫情对人们的生活造成诸多不便......),突然想到mysql sqlserver oracle 自己遇到的一些语法上的区分,避免小伙伴跟我一样,踩着百度链接一步一个坑的走过来,噗哈哈哈~新年快乐

过了今天 以后的 sj;sysdate;current_date都是2022啦 

一、获取系统时间

MYSQL

select SYSDATE()
select now()

select CURRENT_DATE

select CURRENT_TIME

SQL Server

select  getdate()

Oracle

select sysdate from dual; -- 31-12月-21

二、格式化

MYSQL

select year(now()) -- 2021
select month(now()) -- 12
select day(now()) -- 31
select hour(now()) -- 21
select MINUTE(now()) -- 18
select second(now()) -- 58

SQL Server

CONVERT() 函数可以用不同的格式显示日期/时间数据

select convert(varchar(100) ,'yyyy-mm-dd') from ODS_NC_sales_Slip

select convert(varchar(100), getdate(), 20) -- 2021-12-01 15:21:00
select convert(varchar(100), getdate(), 21) -- 2021-12-01 15:21:10.073
select convert(varchar(100), getdate(), 22) -- 12/01/21  3:19:53 PM
select convert(varchar(100), getdate(), 23) -- 2021-12-01
select convert(varchar(100), getdate(), 24) -- 15:20:24
select convert(varchar(100), getdate(), 25) -- 2021-12-01 15:21:23.847

Oracle

select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual; -- 2021-12-31 21:59

select to_char(sysdate, 'yyyy' ) from dual; --年 -- 2021
select to_char(sysdate, 'MM' ) from dual; --月 -- 12
select to_char(sysdate, 'dd' ) from dual; --日 -- 31
select to_char(sysdate, 'Q') from dual; --季 -- 4
select to_char(sysdate, 'iw') from dual; --周  --52   按日历上的那种,每年有52或者53周

当前时间减去7天的时间

select sysdate - interval '7' day from dual; -- 24-12月-21

当前时间减去7月的时间

select sysdate,sysdate - interval '7' month from dual; -- 31-12月-21     31-5月 -21

三、同比、环比  

在做这道题的时候 需要弄清楚几个名词

环比

是指本期与上期数据之间的比率。计算公式为:本期数/上期数✖100%。

环比增长率

是指本期与上期数据之间的增长比率。计算公式为:(本期数-上期数)/上期数×100%。

同比

是把当年每月与上一年相应月份的数据相除计算出的一个比率。即某年第 n 月与上一年第 n 月的比值,计算公式为:本期/同期*100%。

同比增长率

是指和去年同期相比较的增长率,即某年第n月与上一年第n月相比较的增长率,计算公式为:(本期-同期)/同期*100%。

SQL的不同 可能语法上有细微的差距 但是思路都是一样的 自己也只做过SQLite的同环比 其他三个并没有实际操作 时间关系这里暂时空着,再做补充

MYSQL

SQL Server

Oracle

SQLite

  SQLite – Java | 菜鸟教程

select t.m,t.ym,

      t.销量,

      t1.销量 同期,

      (case when t1.销量 is null then '2020' 

          else (t.销量-t1.销量)/t1.销量 end) 同比,

      t2.销量 上期,

      (case when t2.销量 is null then '2020' 

          else (t.销量-t2.销量)/t2.销量 end) 环比

from 

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '2020'

group by strftime('%Y-%m',b.订购日期)

) t

left join

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = 1997

group by strftime('%Y-%m',b.订购日期)

) t1 on t.m=t1.m

left join

(

select (case when strftime('%m',b.订购日期)+0 <=11

        then strftime('%m',b.订购日期)+1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '2020'

group by strftime('%Y-%m',b.订购日期)

union

select (case when strftime('%m',b.订购日期)+0 =12

        then 1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '2020'

group by strftime('%Y-%m',b.订购日期)

) t2 on t.m=t2.m

四、截取字符串

MYSQL

留空

SQL Server

留空

left()

right()

substring()

Oracle

留空

SQLite

函数:substr(string string,num start,num length)
用法:
string为字符串;
start为起始位置;字符串的第一个字符的位置为1,不是从0开始计算
length为长度

五、日期相减

MYSQL

留空

SQL Server

留空

Oracle

留空

SQLite

 DATEDIFF ( datepart , startdate , enddate ) -- 用 enddate 减去 startdate

六、类型转换

MYSQL

留空

SQL Server

SQL Server 采用convert(varchr,'')用法

Oracle

Oracle 采用to_char用法

 

七、将多列合并一列

MYSQL

select concat(str1,str2,str3) from 表 -- 可带多个参数

SQL Server

留空

Oracle

select concat(str1,str2) from 表 -- concat只能带两个参数

select str1||str2||str3 from 表 -- || 可以多个拼接

以上零零散散都是自己在工作中遇到过的 自己经常忘 混淆 这里做一下知识整理总结 当然还有很多自己没有遇到过的 感觉挺有意思的 跟同事调侃到“为啥不出来一个牛皮的大佬组织啥的将SQL语法统一的玩笑话”"都一样怎么体现出与众不同呢" 其实很多地方也都是相通的知识部分语法 函数不同 像select group by where 都是通用系列 好啦 时间关系 今天先记录到这里

下次在家!!!



这篇关于我与旧事归于尽,来年依旧迎花开~的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程