或者切换时区的操作,3个核心元素分别是

2019-09-27 作者:数据库   |   浏览(57)

先创建Students表

mysql中对于时间的处理,时间的滚动,求时间间隔,切换时区等等

转自:)

 

CREATE TABLE [dbo].[Students](
[Id] [int] IDENTITY(1,1) NOT NULL,
[age] [int] NULL,
[name] [nvarchar](50) NULL,
[addTime] [datetime]  NULL
) ON [PRIMARY]

在mysql的使用过程中,有时候会出现对时间进行的操作,比如时间向前向后滚动,求2个时间的间隔,或者切换时区的操作

<span style="font-size:16px;font-weight:bold;">
小鱼儿玄机30码姐妹,摘要:
在mssql中,一条sql语句默认为一个事务,下文展示如何在一条sql语句中,插入多行数据
</span>
<hr />
例:  

Preface

 

1,时间向前滚动(未来),假如现在有一个开始时间,持续时间,而我的业务只希望知道结束时间,这个时候就需要用到TIMESTAMPADD函数,

create table test (keyId int identity,info varchar(10))
go
insert into test(info) values('a'),('b'),('ac'),('ad'),('e')
----采用在每个插入的value后面加入一个逗号
go
select * from test 
go
truncate table test 
drop table test 

 

插入几条测试数据

  DATE_ADD**(date,INTERVAL expr type)**

 

    I've been demonstrated how to implement a master-slave structure using mysqldump in my previous blog.I'm gonna use Xtrabackup to do it again now.

INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (22, N'李四', '2015-04-08 01:00:00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (8, N'李四', '2017-05-03 00:00:00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (98, N'李四', '2017-10-03 00:00:00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (34, N'张三', '2016-09-08 00:00:00.000')
INSERT [dbo].[Students] ([age], [name], [addTime]) VALUES (45, N'张三','2011-05-08 00:00:00.000')
INSERT [dbo].[Students] ( [age], [name], [addTime]) VALUES (5, N'张三', '2014-04-01 00:00:00.000')

  date 参数是合法的日期表达式,可以是你需要的时间字段,如start_time(假设这是一个字段名)。

 

第一种写法:

  INTERVAL 是固定语法关键词

Framework

  这种写法用到了窗口函数,窗口函数的行为描述出现在函数的OVER子句中,并涉及多个元素,3个核心元素分别是:分区,排序和框架

  expr 参数是您希望添加的时间间隔,如 1  2  5。

 

select distinct name,
maxAge, max(case maxAgenum when 1 then addtime else '' end) over(partition by name) maxAddTime ,
minage,max(case minAgenum when 1 then addtime else '' end) over(partition by name) minAddTime
from (
select name,addtime,
max(age) over(partition by name) maxAge,
min(age) over(partition by name) minAge,
RANK() over(partition by name order by age desc) maxAgeNum ,
RANK() over(partition by name order by age ) minAgeNum from students
) s

  type 参数可以是下列值:

Hostname IP/Port Identity OS Version MySQL Version GTID Mode Binlog Format
zlm2 192.168.1.101/3306 master CentOS 7.0 5.7.21 on row
zlm3 192.168.1.102/3306 slave CentOS 7.0 5.7.21 on row

第二种写法:

    FRAC_SECOND。毫秒

 

with s as
(
select name,max(age) maxAge,min(age) minAge from students
group by name
)
select name,max(maxAge) maxAge,max(maxAgeTime) maxAgeTime,max(minAge) minAge,max(minAgeTime) minAgeTime from (
select ss.name,s.maxAge,ss.addTime maxAgeTime,0 minAge, '' minAgeTime from students ss inner join s on ss.name=s.name and ss.age=s.maxAge
union all
select ss.name,0 maxAge , '' maxAgeTime,s.minAge minAge,ss.addTime minAgeTime from students ss inner join s on ss.name=s.name and ss.age=s.minAge
) a group by name

    SECOND。秒
    MINUTE。分钟
    HOUR。小时
    DAY。天
    WEEK。星期
    MONTH。月
    QUARTER。季度
    YEAR。年

Procedure

 

2, 时间向后滚动(过去),和上面的用法类似,不过这次用的是DATE_SUB函数

 

本文由小鱼儿玄机30码发布于数据库,转载请注明出处:或者切换时区的操作,3个核心元素分别是

关键词: 小鱼儿玄机30码