sql_sqlyog - CSDN
sql 订阅
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。 展开全文
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。
信息
中文名
结构化查询语言
通过时间
1986年10月
外文名
Structured Query Language
所属领域
数据库
持续时间
33年经
结构化查询语言简介
SQL语言1974年由Boyce和Chamberlin提出,并首先在IBM公司研制的关系数据库系统SystemR上实现。由于它具有功能丰富、使用方便灵活、语言简洁易学等突出的优点,深受计算机工业界和计算机用户的欢迎。1980年10月,经美国国家标准局(ANSI)的数据库委员会X3H2批准,将SQL作为关系数据库语言的美国标准,同年公布了标准SQL,此后不久,国际标准化组织(ISO)也作出了同样的决定。 [1]  SQL从功能上可以分为3部分:数据定义、数据操纵和数据控制。 [1]  SQL的核心部分相当于关系代数,但又具有关系代数所没有的许多特点,如聚集、数据库更新等。它是一个综合的、通用的、功能极强的关系数据库语言。其特点是: [1]  1、数据描述、操纵、控制等功能一体化。 [1]  2、两种使用方式,统一的语法结构。SQL有两种使用方式。一是联机交互使用,这种方式下的SQL实际上是作为自含型语言使用的。另一种方式是嵌入到某种高级程序设计语言(如C语言等)中去使用。前一种方式适合于非计算机专业人员使用,后一种方式适合于专业计算机人员使用。尽管使用方式不向,但所用语言的语法结构基本上是一致的。 [1]  3、高度非过程化。SQL是一种第四代语言(4GL),用户只需要提出“干什么”,无须具体指明“怎么干”,像存取路径选择和具体处理操作等均由系统自动完成。 [1]  4、语言简洁,易学易用。尽管SQL的功能很强,但语言十分简洁,核心功能只用了9个动词。SQL的语法接近英语口语,所以,用户很容易学习和使用。 [1] 
收起全文
精华内容
参与话题
  • SQL入门教程

    千人学习 2019-11-25 17:53:57
    本课程为 SQL 入门教程,基于最新标准 SQL: 2016,全面讲解六种主流数据库的 SQL 语句实现与差异,包括:Oracle、MySQL、SQL Server、PostgreSQL、Db2 以及 SQLite 。 本课程面向 SQL 初学者、数据库工程师/管理员、...
  • SQL最全基础教程(有本事别看啊!)

    万次阅读 多人点赞 2018-09-21 17:09:48
    SQL基础教程 一、SQL简介 1:什么是SQL? A:SQL指结构化查询语句 B:SQL使我们有能力访问数据库 C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言 2:SQL能做什么? *面向数据库执行查询 *从数据库中取出...

    SQL基础教程

    一、SQL简介

    1:什么是SQL?

    A:SQL指结构化查询语句    B:SQL使我们有能力访问数据库     C:SQL是一种ANSI(美国国家标准化组织)的标准计算机语言

    2:SQL能做什么?

    *面向数据库执行查询   *从数据库中取出数据   *向数据库插入新的记录   

    *更新数据库中数据   *从数据库删除记录   *创建数据库   *创建表   

    *创建存储过程   *创建视图   *设置表、存储过程和视图的权限

    3:RDBMS

    RDBMS是指关系型数据库管理系统

    RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,如MS SQL Server、IBM DB2、Oracle、MySQL以及Microsoft Access

    RDBMS中的数据存储在被称为表的数据库对象中

    表是相关的数据项的集合,他由列和行组成。

    二、SQL语法

    注意:SQL对大小写不敏感!!!

    1:SQL语句后面的分号

    某些数据库系统要求在每条SQL命令的末端使用分号。

    分号是在数据库系统中分隔每条SQL语句的标准方法,这样就可以在服务器的相同请求中执行一条以上的语句。

    如果使用的是MS Access和SQL Server 2000,则不必在每条SQL语句之后使用分号,不过某些数据库要求必须使用分号。

    2:SQL DML和DDL

    可以把SQL分为两个部分:数据操作语言(DML)和数据库定义语言(DDL)

    SQL(结构化查询语句)适用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。查询和更新构成了SQL的DML部分:select、update、delete、insert into 。 数据库定义语言(DDL)部分使我们有能力创建或删除表格,我们也可以定义索引(键),规定表之间的连接,以及事假表间的约束:

    Create database、alert database、create table、alert table、drop table、create index、drop index

    三、Select

    User表里面的数据如下

     

    查询user表里面的user_name字段和user_age字段的所有数据

    Select user_name,user_age from user

     

    查询user表中所有的字段数据,用 * 表示列的名称

    Select * from user

     

    四、Distinct

    Distinct选取所有的值的时候不会出现重复的数据

    用普通的查询,查询所有

    Select * from user

     

    Select distinct user_name,user_age from user

    注意:不能有user_id,因为两个Mary的user_id不一样,加上就不算相同数据

     

    五、Where

    1:查询user_id等于1 的数据

    Select * from user where user_id = 1

     

    2:查询user_age大于等于12的数据

    Select * from user where user_age >=12

     

    3:查询user_age不等于12的数据

    Select * from user where user_age <> 12

     

    六、AND 和 OR

    And和or在where子语句中把两个或多个条件结合起来。如果需要两个条件都成立就是用and如果只需要其中一个条件成立就使用or

    Select * from user where user_name = 'mary' and user_age = 12

    需要注意的是SQL使用单引号来环绕文本值,如果是数值则不需要引号

     

    Select * from user where user_name='mary' or user_age =13

     

    结合and和or使用圆括号来组成复杂的表达式

    Select * from user where (user_name = 'mary' and user_age = 12) or(user_age =13)

     

    七、Order by

    1:对指定列进行升序排列

    Select * from user order by user_name

     

    2:按照user_id逆序排列

    Select * from user order by user_id DESC

     

    2:按照升序排列user_id逆序排列user_age

    SELECT * FROM user order by user_id ASC,user_age DESC

     

    3:按照升序排列user_id逆序排列user_age

    SELECT * FROM user order by user_age DESC,user_id ASC

     

    注意:前面的条件优先级更高!!

    八、Insert

    User表

     

    插入一行数据 user_id为2 user_name为tom,user_age为12

    注意:如果每一项都有插入的话就不需要在前面列出列名!!

    Insert into user values(2,'tom',12)

    新插入一行数据,只要求user_name为eva

    Insert into user(user_name) values('eva')

    注意:因为ID设置为自增,所以user_id不为null

     

    九、Update

    修改user_id为6的数据user_age为14

    Update user set user_age=14 where user_id=6

     

    修改user_id为1的数据user_name为ann,user_age为11

    Update user set user_name='ann',user_age=11 where user_id=1

    十、Delete

    User表中的所有数据信息如下

     

    删除user_age为12的数据

    Delete from user where user_age=12

     

    删除表中的所有数据

    Delete from user

     

    第二章 SQL高级教程

    一、Top

    Top子句用于返回要返回的记录的数目,但并不是所有的数据库都支持top子句

    1:SQL Server

    Select top 5 * from user

    2:MySQL

    Select * from user limit 5

    3:Oracle

    Select * from user where ROWNUM <= 5

    二、Like

    User表的初始数据如下

    1:找出以li开头的数据

    Select * from user where user_name like 'li%'

    2:找出以ry结尾的数据

    Select * from user where user_name like '%ry'

     

    3:找出含有a的数据

    Select * from user where user_name like '%a%'

     

    4:找出第二个字母是a第四个字母是y的数据

    Select * from user where user_name like '_a_y'

     

    三、通配符

    在搜索数据库中的数据的时候SQL通配符可以替代一个或多个字符。SQL通配符必须与like运算符一起使用

    1: _ 替代一个字符

    找出第二个字母是a第四个字母是y的数据

    Select * from user where user_name like '_a_y'

     

    2: % 替代一个或多个字符

    找出以ry结尾的数据

    Select * from user where user_name like '%ry'

     

    3: [] 字符列中的任意一个单字符

    找出以a或者l开头的数据

    Select * from user where user_name like '[al]%'

    找出不是a或者l开头的数据

    Select * from user where user_name like '[!al]%'

    四、In

    只要数据满足in里面的一个条件就可以了

    找到user_age是12或者13的数据

    Select * from user where user_age in (12,13)

     

    找到user_name是Harry和Mary的数据

    Select * from user where user_name IN ('mary','harry')

     

    五、Between

    选取两个值之间的数据

    查询年龄在12和14之间的数据

    Select * from user where user_age between 12 and 14

     

    查询字母在Alice和John之间的数据

    Select * from user where user_name between 'alice' AND'john'

     

    六、Aliases

    指定别名

    假设我们有两个表分别是user和Room 。我们分别指定他们为u和r。

    1:不使用别名

    Select room.room_name,user.user_name,user.user_age from user ,room  Where user.user_age=12 and room.room_id = 1

     

    2:使用别名

    使用别名的时候直接将别名跟在后面,不使用as也可以

    Select r.room_name,u.user_name,u.user_age from user as u,room as r  Where u.user_age=12 and r.room_id = 1

     

    七、Join

    数据库中的表可以通过键将彼此联系起来,主键是一个列,在这个列中的每一行的值都是唯一的,在表中,每个主键的值都是唯一的,这样就可以在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

    以下为表user和表Room的数据

         

    1:引用两个表

    找出在Room of boy相关联的用户信息

    Select u.user_name,u.user_age,r.room_name from user as u,room as r 

    Where u.room_id = r.room_id and r.room_name='room of boy'

     

    2:使用关键字join来连接两张表

    Select u.user_name,u.user_age,r.room_name

    from user as u

    join room as r

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    八、Inner join

    Inner join 与 join 用法一致

    Select u.user_name,u.user_age,r.room_name

    from user as u

    inner join room as r

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    九、Left join

    注意:左连接以左边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

    1:user在左边

    Select u.user_name,u.user_age,r.room_name

    from user as u

    Left join room as r

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    2:Room在左边

    Select u.user_name,u.user_age,r.room_name

    From room as r

    Left join user as u

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    十、Right join

    注意:左连接以右边的表为主体,也就是说会列出左边的表中的所有的数据,无论它是否满足条件。

    1:Room在右边

    Select u.user_name,u.user_age,r.room_name

    from user as u

    Right join room as r

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    2:user在右边

    Select u.user_name,u.user_age,r.room_name

    from  room as r

    Right join user as u

    on u.room_id = r.room_id and r.room_name='room of boy'

     

    十一、Full join

    1:user在左边

    Select * from user Full join room

     

    2:Room在左边

    Select * From room full join user

     

    注意:SQL错误码1054表示没有找到对应的字段名;错误码1064表示用户输入的SQL语句有语法错误

    十二、Union

    Union操作符用于合并两个或者多个SELECT语句的结果集

    请注意,UNION内部的select语句必须拥有相同数量的列。列也必须拥有相同的数据类型。同时,每条select语句中的列的顺序必须相同。

    下面是Room表和color表的数据

         

    Select room_name from room

    Union

    Select color_name from color

     

    默认的union选取不同的值,如果想要有相同的值出现就使用union all

    Select room_name from room

    Union all

    Select color_name from color

     

    十三、Create DB

    创建数据库mysqltest

    Create database mysqltest

     

    十四、Create table

    Create table sqltest(

    Id int,

    Name varchar(45),

    Age int,

    Salary float,

    Time Date,

    )

      

    十五、Constraints

    SQL约束,用于限制加入表的数据的类型

    常见约束:not noll、unique、primary key、foreign key、check、default

    十六、Not null

    Not null 约束强制列不接受NULL值。Not null 约束强制字段始终包含值,这意味着,如果不向字段添加值,就无法插入新的字段或者更新记录

    用法,在字段后面加上 not null

     

    十七、Unique

    Unique约束唯一标识数据库中的每一条记录。Primary key约束拥有自动的unique约束。需要注意的是,每个表里面可以拥有多个unique约束,但只能有一个primary key约束

    1:MySQL用法,unique(字段名)

     

    2:SQL Server 、 Oracle 、 MS Access在字段后面加

     

    3:命名约束使用constraint

     

    4:已经创建了表之后需要添加约束

    ALTER TABLE sqltest ADD UNIQUE(Age)

     

    5:给已经创建了的表添加约束并命名

    ALTER TABLE sqltest ADD constraint unique_name UNIQUE(Age,salary)

     

    6:撤销约束

    MySQL

    在没有给约束命名的情况下(上面的age约束)直接使用字段名就可以了

    ALTER TABLE sqltest DROP INDEX age

      删除后   

    在约束有名字的情况下,直接使用名字就可以了

    ALTER table sqltest  drop index unique_name

       删除后  

    SQL Server 、 Oracle 、 MS Access

    ALTER table 表名 drop constraint 约束名

     

    十八、Primary key

    Primary key约束唯一标识数据库表中的每一条记录,组件必须包含唯一的值。组件列不能包含NULL值。每个表都应该有一个主键,并且每一个表都只能有一个主键

    1:在MySQL中的用法

     

    2:在SQL Server 、 Oracle 和MS Access中的用法

     

    3:为已经创建成功的表创建primary key约束

    Alter table sqltest add primary key(id)

     

    4:为已经创建成功的表添加主键约束,以及为多个列定义主键约束

    Alter table sqltest add constraint pk_name primary key (id,name)

     

    5:在MySQL中撤销主键

    ALTER  TABLE sqltest DROP PRIMARY KEY

       删除后   

    6:在SQL Server、Oracle、MS Access中撤销主键

    Alter table 表名 drop constraint 主键名

    十九、Foreign key

    所谓的外键,即一个表的外键指向另一个表的主键

    User表

    Room表

    在user表里面room_id列指向Room表里面的id列。Room表里面的id列是主键,user表里面的room_id列是外键。外键约束用于预防破坏表之间的连接动作,外键约束也能防止非法数据插入外键列,因为他必须是他指向的那个表的值之一。

     

    二十、Check

    Check约束用于限制列中的值的范围。如果对单一的列定义check约束,那么改了只允许特定的值。如果对一个表定义check约束,那么此约束会在特定的列中对值进行限制。

     

    为已经创建成功的表添加check约束

    ALTER TABLE USER ADD CHECK (age>10)

    二十一、Default

    Default约束用于向列宗插入默认值。如果没有规定其他值,那么就会将默认值添加到所有的新纪录。

    用法:

     

    当表已经存在的时候,添加默认值

    ALTER TABLE sqltest ALTER NAME SET DEFAULT 'tom'

     

    撤销默认值

     

    二十二、Create index

    索引,你可以在表里面创建索引,一边更加快速高效地查询数据。用户无法看见索引,他们只能被用来加速搜索、查询。

    注意:更新一个包含索引的表需要比更新一个没有索引的表更多的时间,这是索引本身也需要更新,因此,理想的做法是仅仅在常常被搜索的列上面创建索引。

    1:创建一个索引

    CREATE INDEX index_name ON color (color_id )

     

    2:创建一个独一无二的索引,即两行不能拥有相同的索引值。

    CREATE UNIQUE INDEX book_index ON book (book_id)

     

    3:如果索引不止一个列,你可以在括号中列出这些列的名称,用逗号隔开

    CREATE INDEX index_bank ON bank (bank_id,bank_name)

     

    二十三、Drop

    通过使用DROP语句,可以删掉索引、表和数据库

    1:删除索引

    Drop index index_name on color

     

    删除之后

     

    2:删除表

    DROP TABLE colorcopy

      删除之后   

    3:清空表

    TRUNCATE TABLE color

      删除之后  

    4:删除数据库

    DROP DATABASE mysqltest

     删除之后  

    二十四、Alert

     

    1:添加列

    Alter table user add salary float

     

    2:删除列

    Alter table user drop column room_id

     

    二十五、Increment

    定义主键自增

     

    二十六、View

    视图,一种基于SQL语句的结果集可视化表。视图包含行和列,就像一个真实的表。视图中的字段来自一个或多个数据库中的真实的表中的字段,我们可以向视图添加SQL函数、where以及join语句,我们提交数据,然后这些来自某个单一的表。需要注意的是,数据库中的结构和设计不会受到视图的函数、where或join语句的影响

    1:创建一个视图,字段来自user表和Room表

    CREATE VIEW view_test AS

    SELECT user.user_name,user.user_age,room.room_name

    FROM USER,room

    WHERE user.user_age>10

    2:查询视图

    Select * from view_test

     

    3:撤销视图

    DROP VIEW view_test

    二十七、Date

     

    二十八、Nulls

    默认的,表的列可以存放NULL值。如果表里面的某个列是可选的,那么我们可以在不想改列添加值的情况下插入记录或者更新记录,这意味着该字段以NULL值保存。注意,NULL和0是不等价的,不能进行比较。

     

    1:查询NULL值 

    select * from user where salary is null

     

    2:查询非NULL值 

    select * from user where salary  is not null

     

    二十九、数据类型

    MySQL主要有三种类型:文本、数字、日期

     

    三十、服务器 

     

    第三章 SQL函数

    一、SQL functions

    在SQL当中,基本的函数类型和种类有若干种,函数的基本类型是:

    合计函数(Aggregate function)和 Scalar函数

    Aggregate 函数,函数操作面向一系列的值,并返回一个单一的值。

    Scalar 函数,操作面向某个单一的值,并返回基于输入值的一个单一的值。

    二、Avg()

    求平均年龄

    Select avg(user_age) from user

     

    求大于平均年龄的用户

    Select * from user where user_age>(Select avg(user_age) from user)

     

    三、Count()

    返回列的值的数目(不包含NULL)

    注意,可以使用as来给count()取一个别名

     

    Select count(user_id) from user

     

    Select count(salary) from user

     

    返回值不同的有多少

    Select count(distinct user_name) from user

     

    查询所有列

    Select count(*) from user

     

    四、Max()

    返回最大值,NULL不包括在计算中

     

    Select max(price) as max_price from commodity

     

    五、Min()

    返回最小值,NULL不包括在计算中

     

    Select min(salary) poor_man from user

     

    六、Sum()

    返回该列值的总额

     

    Select sum(salary) from user

     

    七、Group By 

    用于结合合计函数,根据一个或多个列对结果集进行分组

     

    SELECT cname,SUM(price) FROM commodity GROUP BY cname

     

    八、Having

    在SQL中增加having子句的原因是where不能与合计函数一起使用。用法和where 一样

    SELECT cname,SUM(price) FROM commodity

    GROUP BY cname

    HAVING  SUM(price)>20

     

    九、Ucase()

    把函数字段的值转化为大写

     

    SELECT UCASE(user_name) FROM user

     

    十、Lcase()

    将函数字段转化为小写

     

    Select lcase(user_name) from user

     

    十一、Mid()

    从文本字段中提取字符

     

    Select mid(user_name,2,2) from user

     

    十二、Round()

    Round函数把数值字段舍入为指定的小数位数

     

    Select round(salary,2) from user

     

    十三、Now()

    返回当前时间

    SELECT NOW() FROM user

     

    示例:

    --查找emp表

    select * from emp;

    --查找emp表的sal

    select a.SAL from emp a;

    --查找emp表的ename

    select a.ename from emp a;

    --emp表的sal*10

    select a.SAL*10 from emp a;

    --emp表的sal的平均值

    select avg(a.sal) from emp a;

    --emp表的sal的总和

    select sum(a.sal) from emp a;

    --emp表的sal的max

    select max(a.sal) from emp a;

    --emp表的sal的min

    select min(a.sal) from emp a;

    --emp表中sal<1000的信息

    select * from emp where sal<1000;

    --ename中含有A的信息

    select ename  from emp where ename like'%A%';

    --emp中ename不含有A的信息

    select * from emp where ename not like'%A%';

     

     

    --查询系统时间

    select sysdate from dual;

    --计算薪资小于5000的员工的工资总和

    select sum(sal) from emp where sal<5000 ;

    --计算工资不高于平均工资的工资总和

    select sum(sal) from emp where sal<(select avg(sal) from emp);

    --计算工资小于4000的员工的平均工资

    select avg((select sum(sal) from emp where sal<4000)) from emp;

    --查询薪水低于100000的员工姓名和sal

    select ename,sal from emp where  sal<100000;

    --计算20号部门的员工的最高工资和最低工资

    select max(sal),min(sal) from emp where deptno=20;

    --查询工资大于1000,并且是20号部门的员工的全部信息

    select * from emp where sal>1000 and deptno=20;

    --求最高工资的员工的员工姓名和部门名称

    select ename,deptno,sal from emp where sal=(select max(sal) from emp);

    --将员工薪水小于5000且部门平均薪水大于1000的部门标号列出,按部门平均薪水降序排序

    select deptno from emp where sal<5000  group by deptno having avg(sal) >1000;

    select sal from emp order by sal desc;

    Order by *** desc

     

    --查找表emp

    select * from emp ;

     

    --根据用户名“Smiths”查找他所在的部门

    select deptno from emp where ename='SMITH';

     

    --查询每个部门的最高工资的人员名称

    select e.ename,e.deptno,e.sal from (select deptno as did ,max(sal) as m from emp group by deptno )  s,emp e,dept d where e.sal=s.m and s.did=e.deptno and d.deptno=e.deptno;

     

    --查询“Jones”之后第一个进入公司的人

    select * from emp where hiredate=(select min(hiredate) from emp where hiredate>(select hiredate from emp where ename='JONES')) ;

     

    --5.查找工资最高的部门名称和工资最低的部门名称及工资

    select d.dname,e.sal from emp e,dept d where e.deptno=d.deptno and sal=(select max(m) from (select deptno,max(sal) as m from emp e group by deptno) s)

    union

    select d.dname,e.sal from emp e,dept d where e.deptno=d.deptno and sal=(select min(m) from (select deptno,min(sal) as m from emp e group by deptno) s)

     

     

     

    --创建表

    create table student(

           StudentId number (6),--学号

           LoginPwd varchar(20),--密码

           StudentName varchar(50),--姓名

           Sex char(2),--性别

           Gradeld Number(6),--所在年级

           Phone number(15),--联系电话

           Address varchar2(255),--现住址

           BornDate Date,--出生日期

           Emile varchar2(50)--电子邮件

    );

    --添加数据

    insert into student values(1001,'123456','赵六','男',1507,120,'北京','23-5月-1995','@10422');

    insert into student values(1002,'123456','王五','女',1507,110,'北京','23-5月-1995','@10422');

    insert into student values(1003,'123456','张三','男',1507,120,'北京','23-5月-1995','@10422');

    insert into student values(1004,'123456','李四','女',1507,110,'北京','23-5月-1995','@10422');

    --提交

    commit;

    --查询此表

    select * from student;

    --根据条件修改

     update student set studentname='孙七',loginpwd='666666' where studentid=1001;

     select * from student;

    --根据条件删除

    delete from student where studentid=1002;

    select * from student;

    --增加字段

    ALTER TABLE 表名称 ADD(列名称 数据类型 [DEFAULT 默认值],列名称 数据类型 [DEFAULT 默认值],…)

    --删除此表

    drop table student;

    --B卷 创建表空间

    create tablespace mytestspace datafile 'e:week3.dbf' size 2M;

    --创建用户

    create user zhangsan identified by zhangsan default tablespace mytestspace

    temporary tablespace temp;

     

    --创建角色并授权

    create role fang;

    grant create table to fang;

    grant fang to zhangsan;

    grant dba to zhangsan;

     

    --创建表

    create table teacher (

    tid number primary key,

    tname varchar2(50),

    tdate date,

    address varchar2(100)

    );

    select * from teacher;

    --创建序列

    create sequence teachers_sequence minvalue 1 maxvalue 100 (最小值,最大值)cycle (循环)increment by 1(步长值) start with 1(从1开始);

    insert into teacher values(teachers_sequence.nextval,'小李','01-1月-1999','北京');

    insert into teacher values(teachers_sequence.nextval,'小张',to_date('1982-1-1','yyyy-mm-dd'),'北京');

    展开全文
  • 数据库 SQL基本语法教程

    热门讨论 2020-07-30 23:33:23
    由浅入深,详细、系统的介绍了SQL的基本语法。是学习和参考不可多得的好资料。
  • SQLServer数据库基础

    万人学习 2019-06-24 13:37:07
    本套课程非常适合初级学员学习,课程内容并非参考书式的简单罗列,而是结合项目实际,讲解项目中常用的知识。那些较偏且不常用的的内容在本课程中并未涉及。这样既能降低学员学习难度、增强学员学习的信心又能利用所...
  • SQL Server 数据库学习

    万次阅读 多人点赞 2018-08-31 20:47:02
    一、认识数据库 1、数据库的基本概念 2、数据库常用对象 3、数据库的组成 ...数据库主要由文件和文件组组成。数据库中所有的数据和对象都被存储在文件中。...(1)选择一个数据库——展开 表——...

    一、认识数据库

    1、数据库的基本概念

    2、数据库常用对象

    3、数据库的组成

    数据库主要由文件和文件组组成。数据库中所有的数据和对象都被存储在文件中。

    二、创建数据库

    1、创建数据库

    对象资源管理器—数据库——右击——新建数据库

    三、操作数据表与视图

    1、创建数据表

    空值:表示数据未知。非空值:数据列不允许空值。

    (1)选择一个数据库——展开 表——新建表

    填入属性

    (2)设置主键

    选择KH_ID右击,设置为主键。主键:建立一列或多列的组合以唯一标识表中的每一行,主键可以保证实体的完整性,一个表只能有一个主键。

    (3)保存新建的表,并给起一个名字。

    (4)修改数据表。选择要修改的数据表,右击——设计。

    (5)创建检查约束,检查约束可以把输入的数据限制在指定范围。

    设计——选择一列——右击 check约束

    (6)创建外键:外键是建立两个表数据之间连接的一列或多列。通过将保存表中主键值的一列或多列添加到另一个表中,可以创建两个表之间的连接。这个列为第二个表的外键。

    2、关系

    一对一

    一对多

    多对多

    3、视图

    将查询的结果以虚拟表的形式存储在数据表中,视图并不在数据库中以存储数据集的形式存在,视图的结构和内容建立在对表的查询基础之上的,视图的行列数据源于查询所应用的表。

    (1)创建视图

    选择指定的数据库——视图——新建视图——添加表——保存

    (2)查看视图的内容(记录)

    选择要查看的视图——编辑前200行

    (3)视图中删除数据记录

    设计——删除

    三、T-SQL

    3.1分类

    3.2语句分类

    3.3 常用的数据操作语句

    3.3.1 select 查询语句

    select 语句是一个查询表达式,包括select、from、where、group by 和 order by 子句。具有数据查询、统计、分组和排序的功能。

     

    select 和from为必选子句,其他为可选语句。

    1、where 用法

    (1)比较运算:

    (2)逻辑运算:

    (3)范围运算:

    (4)列表运算

     

     

    (5)字符匹配运算

    2、ORDER BY 子句

    对查询的结果升序或降序排列

    3、GROUP BY子句

    对查询结果按照一列信息归类

    4、SELECT操作多表数据

    多表查询把多个表的数据组合,再从中获取所需要的数据信息。

    (1)简单基本连接

    (2)内连接

    内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行。

    如:

    (3)外连接

    外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。外连接分三类:左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN)。

    左外链接:

    右外连接:

    完全连接:返回两个表中所有匹配行和不匹配行

    3.3.2 insert 插入语句

     

     

     

    3.3.3   update语句修改指定的数据

    3.3.4 delete 语句删除指定数据

     

    3.4 视图操作

    (1)插入数据

    (2)修改数据

    (3)删除数据

    4、基本表和视图的区别:

    (1)数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集,一般来说你可以用update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。但是也存在可更新的视图,对于这类视图的update,insert和delete等操作最终会作用于与其相关的表中数据。因此,表是数据库中数据存储的基础,而视图只是为了满足某种查询要求而建立的一个对象。

    (2)表是物理存在的,你可以理解成计算机中的文件! 视图是虚拟的内存表,你可以理解成Windows的快捷方式!

     

     

    展开全文
  • SQL/PLSQL:日期函数总结

    万次阅读 2017-03-15 10:13:33
    TO_DATE格式(以当前时间: 2017年2月9日11:25:38 为例) 1.年: yy 两位年 显示值:17 yyy 三位年 显示值:017 yyyy 四位年  显示值:2017 2.月: mm 两位月 显示值:11 3.日: ...当月
    TO_DATE格式(以当前时间: 2017年2月9日11:25:38 为例)
    1.年:
    yy 两位年 显示值:17
    yyy 三位年 显示值:017
    yyyy 四位年  显示值:2017

    2.月:
    mm 两位月 显示值:11

    3.日:
    dd              当月第几天 显示值:09                        
    d 当周第几天 1~7 周日=1,周六=7                                 
    dy 星期几
    Mon~Sun
     
    day 星期几
    Monday~Sunday
     
    ddd 一年中的第几天               

    4.时
    hh24 24小时制 显示值:11

    5.分
    mi      60进制      显示值:25

    6.秒
    ss      60进制      显示值:38




    日期函数


    1、sysdate:得到数据库服务器的当前日期和时间 


    2、current_date:得到客户端的当前日期和时间 


    因为数据库把日期作为数字存储,因此可以对日期进行加减运算,单位是天。 

    1 ) date + n : 加减几天,n可以是负的 

    2) date + n/24 : 加减几个小时 

    3) date - date : 相差的天数


    例1:给当前日期分别加减3天 sysdate +/- 3



    例2:给当前日期加1个小时

    select to_char(sysdate + 1/24,'YYYYMMDD HH24:MI:SS') 

      from dual;



    MONTHS_BETWEEN(date1, date2) 
    返回两个日期差几个月。 记住是 前date1 - 后date2
    例如:
    查询雇员在公司工作的总月数
    select last_name,months_between(sysdate,hire_date) 
      from employees; 


    ADD_MONTHS(date, n)
    给日期加减N个月。N可以为负数, 加减12个月就是一年啦
    例如:
    SELECT ADD_months(SYSDATE,-12) --一年前的今天
           ADD_months(SYSDATE,+24) --两年后的今天
      FROM dual; 


    next_day(date,'char'):  
    找到从date开始的下一个星期几的日期。char表示星期几 

    NEXT_DAY(date,6)  -->下个周五 (这里6,代表星期5,因为美国日期是从星期天开始的,所以1代表的是星期天,2代表星期一,以此类推)

    例如:

    查找今天之后的下一个星期一是几月几号? 注意字符集

    select next_day(sysdate,'星期一') from dual; 

    ORA01846: 周中的日无效 

    select next_day(sysdate,'monday') from dual; 

    中文情况下"星期天"不识别, "星期日"才识别



    ROUND(date[,'fmt']):  

    进位规则:秒=30,分=30,时=12,日=16,月=7; 超过上面分割线就向前一位进1


    TRUNC(date [, 'fmt']):  (常用,后面不接参数就是将日期的时分秒去掉,注意和round区分)

           

    例如 :

    selec  trunc(sysdate,'month'), --按月进行截断,直接截断到给定日期的本月的1号 
    	    trunc(sysdate,'year')  --按年进行截断,直接截断到给定日期的本年月的1月1号 
     from dual;


       


    时间 & 时区

    时区概念:地球分24个时区,东西各12个。一个时区代表1个小时。
    区值通常以绝对偏移量格式来表示:带正负号的小时:分钟。
    东时区为正的,西时区为负的。时区一旦确定了,日期时间函数的返回值就参照该时区来返回。


    1.查看数据库,会话时区:

    SELECT DBTIMEZONE,      --查看数据库所在时区
           SESSIONTIMEZONE  --查看会话所在时区
      FROM DUAL;

    注意:

    DBA通过指定手工建库时CREATE DATABASE 语句的SET TIME_ZONE 子句

    来设置数据库的默认时区。如果省略,那么默认数据库时区是操作系统时区。

    如果操作系统的时区格式是oracle不支持的,那么就把数据库的时区设为0时区。官方推荐数据库的时区都使用0时区。

    ALTER SESSION语句不能改变数据库时区。


    2.设置会话时区为西五区(美国东部时间)

    alter session set time_zone = '-05:00'--绝对偏移量,负为西


    3.设置本会话使用数据库的时区

    alter session set time_zone = DBTIMEZONE;


    4.把时区设置成本地

    alter session set time_zone = local;  --不同操作系统,可能不支持


    5.时区设置成某地域的时区

    alter session set time_zone = 'American/New_York'--不同操作系统,可能不支持




    和客户端有关的日期时间函数:3个

    current_date   current_timestamp  localtimestamp


    三个都返回客户端的当前日期和时间,区别在于值的数据类型不一样

    sessiontimezone:该函数返回客户端的时区设置


    查看系统各个时间函数:

    select sessiontimezone ,
           current_date , 
           current_timestamp , 
           localtimestamp 
      from dual; ---(注意三个时间函数的精度)




    数据库的时区

    返回数据库的时区: 0时区

    select dbtimezone from dual;

    DBA通过指定手工建库时CREATE DATABASE 语句的SET TIME_ZONE 子句

    来设置数据库的默认时区。如果省略,那么默认数据库时区是

    操作系统时区。

    如果操作系统的时区格式是oracle不支持的,那么就把数据库的时区设为0时区。官方推荐数据库的时区都使用0时区。

    ALTER SESSION语句不能改变数据库时区。


    TIMESTAMP类型:时间戳类型。3种

    -TIMESTAMP数据类型是DATE数据类型的扩展:

    1)TIMESTAMP (fractional_seconds_ precision)     

    2)TIMESTAMP (fractional_seconds_precision) WITH 

         TIME ZONE     带时区的时间戳

    3)TIMESTAMP (fractional_seconds_precision) WITH 

         LOCAL TIME ZONE     带本地时区的时间戳

    其中:fractional_seconds_precision小数秒精度取

    值范围是0-9。默认是6(微秒 ms)


    特别注意:最后一种timestamp类型的列,它的值在保存到表中时,会按照数据库的时区进行自动转换;当从表中把该类型的列值取出来时,有按照客户端的时区做自动转换。

    前面两种timestamp类型的列值不会做这样的转换。


    例子:

    --创建订单表 
    CREATE TABLE web_orders 
      ( 
         order_date    TIMESTAMP WITH TIME ZONE,         --订货时间使用 带时区的时间戳
         delivery_time TIMESTAMP WITH local TIME ZONE   --送货时间使用 带本地时区的时间戳
      ); 

    --美国客户插入订单 
    INSERT INTO web_orders 
    VALUES     (current_date, 
                current_timestamp + 2); 
    COMMIT; 

    --美国客户查询。看到正确的日期(西五区的时间) 
    SELECT * FROM   web_orders; 

    --在sqlplus中,国内的物流哥们查询,看到正确的时间(东八区的时间) 
    SELECT * FROM   web_orders;





    时间间隔类型


    INTERVAL数据类型用来存储两个日期值之间的差值。有两类INTERVAL: 

    INTERVAL YEAR(year_precision) TO MONTH

    INTERVAL DAY(day_precision) TO SECOND(fractional_seconds_precision)

    year_precision                    是YEAR字段的精度,取值范围0—9,默认为2.

    fractional_seconds_precision 是小数秒的精度,取值范围0—9,默认为6. 

    day_precision                    是DAY字段的最大值(取值范围0—9,默认为2. )


    l=eg:  

    1、使用年到月的间隔

    create table warranty(

      prod_id number,产品编号

      warranty_tiem interval year(3) to month       --担保时间,year(3)-年的部分最少有三位

    );

    注意间隔类型的字面量写法:ansi语法

    insert into warranty values(123,interval '8' month);             --

    SQL 错误: ORA01873: 间隔的前导精度太小

    insert into warranty values(456,interval '200' year);      --必须指定年的精度有3位

    insert into warranty values(456,interval '200' year(3));   --正确写法


    注意间隔类型的字面量写法,oracle简单语法:'年-月'

    insert into warranty values(789,'200-11');   200年 零 11个月简单写法


    2、使用天到秒的间隔

    create table lab(

      exp_id number,

      test_time interval day to second  --day不指定精度默认位2 秒精度默认为6

    );

    实验123的测试时间是90天一次

    insert into lab values(123,'90 00:00:00');

    insert into lab values(456, interval '06 03:30:16' day to second);

    select * from lab;

    间隔类型的使用常用于日期的加减运算中




    其它日期时间函数


    1.EXTRACT 函数:从给定的日期中抽取出特定的部分

    extract(.... from .....)

    SELECT  EXTRACT ([YEAR] [MONTH][DAY] 

                      [HOUR] [MINUTE][SECOND]

     FROM [datetime_value_expression] |

       [interval_value_expression]);


    例如:

    select sysdate,extract(year from sysdate)

      from dual;

    查询雇员入职的月份

    select hire_date,extract(month from hire_date)

      from employees;

      


    2、tz_offset()

    将命名地区形式的时区转换成时区的绝对偏移量

    select tz_offset('Asia/Shanghai'),

           tz_offset('Canada/Yukon')

      from dual;     

    要得到合法时区名的列表,可以查询V$TIMEZONE_NAMES动态性能视图。

    SELECT * FROM V$TIMEZONE_NAMES;



    3、to_timestamp(char,'fmt')

    将字符串以给定的日期格式模型转换成时间戳

    select to_timestamp('20071010 15:25:00','YYYYMMDD HH24:MI:SS')

      from dual;


    4、to_yminterval('year-month')

    将字符串转成成年到月的间隔

    将雇员的入职日期加上1年2个月

    select hire_date,

          hire_date + to_yminterval('01-02')

     from employees;

     

    5、to_dsinterval('day hh:mi:ss')

    将字符串转成成天到秒的间隔 

    将雇员的入职日期加上100天10个小时

    select to_char(hire_date,'YYYYMMDD HH24:MI:SS'),

          to_char(hire_date + to_dsinterval('100 10:00:00'),

                  'YYYYMMDD HH24:MI:SS')

     from employees;

     





    MONTHS_BETWEEN(date1, date2) 
    返回两个日期差几个月。 记住是 前 - 后


    ADD_MONTHS(date, n)
    给日期加减几个月。N是整数可以为负数
    `注:加减12个月就是1年!
    SELECT ADD_months(SYSDATE,-12) FROM dual;    --一年前的今天
    SELECT ADD_months(SYSDATE,+24) FROM dual;   --两年后的今天
    next_day(date,'char'):  
    找到从date开始的下一个星期几的日期。char表示星期几 
    上面等价于:NEXT_DAY(date,'星期一')
    例如:

    例如:
    查询雇员在公司工作的总月数
    select last_name,months_between(sysdate,hire_date) from employees; 

    NEXT_DAY(date,6)  -->下个周五 (这里6,代表星期5,因为美国日期是从星期天开始的,所以1代表的是星期天,2代表星期一,以此类推)

    查找今天之后的下一个星期一是几月几号? 注意字符集

    select next_day(sysdate,'星期一') from dual; 

    ORA01846: 周中的日无效 

    select next_day(sysdate,'monday') from dual; 


    ROUND(date[,'fmt']):  

    进位规则:秒=30,分=30,时=12,日=16,月=7; 超过上面分割线就向前一位进1


    TRUNC(date [, 'fmt']):  (常用,后面不接参数就是将日期的时分秒去掉)

           

    例如 :

    规则:按月进行截断,直接截断到给定日期的本月的1号 

                按年进行截断,直接截断到给定日期的本年月的1月1号  

    select sysdate,trunc(sysdate,'month'), trunc(sysdate,'year')  from dual;



       




    时间 & 时区


    时区概念:地球分24个时区,东西各12个。一个时区代表1个小时。
    区值通常以绝对偏移量格式来表示:带正负号的小时:分钟。
    东时区为正的,西时区为负的。时区一旦确定了,日期时间函数的返回值就参照该时区来返回。


    oracle中,时区分为客户端的和服务器的两种,分别设置。

    设置客户端的时区使用会话参数:time_zone

    1.查看数据库,会话时区:

    select dbtimezone from dual;

    select sessiontimezone from dual;


    2.设置会话时区为西五区(美国东部时间)

    alter session set time_zone = '-05:00'; (绝对偏移量,负为西)


    3.设置本会话使用数据库的时区

    alter session set time_zone = dbtimezone;


    4.把时区设置成本地

    alter session set time_zone = local;  -- (操作系统,可能不支持)


    5.时区设置成某地域的时区

    alter session set time_zone = 'American/New_York'; -- (操作系统,可能不支持)




    和客户端有关的日期时间函数:3个

    current_date   current_timestamp  localtimestamp


    三个都返回客户端的当前日期和时间,区别在于值的数据类型不一样

    sessiontimezone:该函数返回客户端的时区设置


    查看系统各个时间函数:

    select sessiontimezone ,

           current_date 

           current_timestamp , 

           localtimestamp 

      from dual; ---(注意三个时间函数的精度)




    数据库的时区

    返回数据库的时区: 0时区

    select dbtimezone from dual;

    DBA通过指定手工建库时CREATE DATABASE 语句的SET TIME_ZONE 子句

    来设置数据库的默认时区。如果省略,那么默认数据库时区是

    操作系统时区。

    如果操作系统的时区格式是oracle不支持的,那么就把数据库的时区设为0时区。官方推荐数据库的时区都使用0时区。

    ALTER SESSION语句不能改变数据库时区。


    TIMESTAMP类型:时间戳类型。3种

    -TIMESTAMP数据类型是DATE数据类型的扩展:

    1)TIMESTAMP (fractional_seconds_ precision)     

    2)TIMESTAMP (fractional_seconds_precision) WITH 

         TIME ZONE     带时区的时间戳

    3)TIMESTAMP (fractional_seconds_precision) WITH 

         LOCAL TIME ZONE     带本地时区的时间戳

    其中:fractional_seconds_precision小数秒精度取

    值范围是0-9。默认是6(微秒 ms)


    特别注意:最后一种timestamp类型的列,它的值在保存到表中时,会按照数据库的时区进行自动转换;当从表中把该类型的列值取出来时,有按照客户端的时区做自动转换。

    前面两种timestamp类型的列值不会做这样的转换。


    例子:

    --创建订单表 
    CREATE TABLE web_orders 
      ( 
         order_date    TIMESTAMP WITH TIME ZONE,         --订货时间使用 带时区的时间戳
         delivery_time TIMESTAMP WITH local TIME ZONE   --送货时间使用 带本地时区的时间戳
      ); 

    --美国客户插入订单 
    INSERT INTO web_orders 
    VALUES     (current_date, 
                current_timestamp + 2); 
    COMMIT; 

    --美国客户查询。看到正确的日期(西五区的时间) 
    SELECT * FROM   web_orders; 

    --在sqlplus中,国内的物流哥们查询,看到正确的时间(东八区的时间) 
    SELECT * FROM   web_orders;





    时间间隔类型


    INTERVAL数据类型用来存储两个日期值之间的差值。有两类INTERVAL: 

    INTERVAL YEAR(year_precision) TO MONTH

    INTERVAL DAY(day_precision) TO SECOND(fractional_seconds_precision)

    year_precision                    是YEAR字段的精度,取值范围0—9,默认为2.

    fractional_seconds_precision 是小数秒的精度,取值范围0—9,默认为6. 

    day_precision                    是DAY字段的最大值(取值范围0—9,默认为2. )


    l=eg:  

    1、使用年到月的间隔

    create table warranty(

      prod_id number,产品编号

      warranty_tiem interval year(3) to month       --担保时间,year(3)-年的部分最少有三位

    );

    注意间隔类型的字面量写法:ansi语法

    insert into warranty values(123,interval '8' month);             --

    SQL 错误: ORA01873: 间隔的前导精度太小

    insert into warranty values(456,interval '200' year);      --必须指定年的精度有3位

    insert into warranty values(456,interval '200' year(3));   --正确写法


    注意间隔类型的字面量写法,oracle简单语法:'年-月'

    insert into warranty values(789,'200-11');   200年 零 11个月简单写法


    2、使用天到秒的间隔

    create table lab(

      exp_id number,

      test_time interval day to second  --day不指定精度默认位2 秒精度默认为6

    );

    实验123的测试时间是90天一次

    insert into lab values(123,'90 00:00:00');

    insert into lab values(456, interval '06 03:30:16' day to second);

    select * from lab;

    间隔类型的使用常用于日期的加减运算中




    其它日期时间函数


    1.EXTRACT 函数:从给定的日期中抽取出特定的部分

    extract(.... from .....)

    SELECT  EXTRACT ([YEAR] [MONTH][DAY] 

                      [HOUR] [MINUTE][SECOND]

     FROM [datetime_value_expression] |

       [interval_value_expression]);


    例如:

    select sysdate,extract(year from sysdate)

      from dual;

    查询雇员入职的月份

    select hire_date,extract(month from hire_date)

      from employees;

      


    2、tz_offset()

    将命名地区形式的时区转换成时区的绝对偏移量

    select tz_offset('Asia/Shanghai'),

           tz_offset('Canada/Yukon')

      from dual;     

    要得到合法时区名的列表,可以查询V$TIMEZONE_NAMES动态性能视图。

    SELECT * FROM V$TIMEZONE_NAMES;



    3、to_timestamp(char,'fmt')

    将字符串以给定的日期格式模型转换成时间戳

    select to_timestamp('20071010 15:25:00','YYYYMMDD HH24:MI:SS')

      from dual;


    4、to_yminterval('year-month')

    将字符串转成成年到月的间隔

    将雇员的入职日期加上1年2个月

    select hire_date,

          hire_date + to_yminterval('01-02')

     from employees;

     

    5、to_dsinterval('day hh:mi:ss')

    将字符串转成成天到秒的间隔 

    将雇员的入职日期加上100天10个小时

    select to_char(hire_date,'YYYYMMDD HH24:MI:SS'),

          to_char(hire_date + to_dsinterval('100 10:00:00'),

                  'YYYYMMDD HH24:MI:SS')

     from employees;

     

    展开全文
  • sql日期格式转换函数 In this article, we will explore various SQL Convert Date formats to use in writing SQL queries. 在本文中,我们将探索各种SQL转换日期格式,以用于编写SQL查询。 We need to ...

    sql日期格式转换函数

    In this article, we will explore various SQL Convert Date formats to use in writing SQL queries.

    在本文中,我们将探索各种SQL转换日期格式,以用于编写SQL查询。

    We need to work with date type data in SQL. It can be a complicated thing to deal with, at times, for SQL Server developers. Suppose you have a Product table with a column timestamp. It creates a timestamp for each customer order. You might face the following issues with it

    我们需要使用SQL中的日期类型数据。 对于SQL Server开发人员而言,有时可能会很复杂。 假设您有一个带有列时间戳的Product表。 它为每个客户订单创建一个时间戳。 您可能会遇到以下问题

    • You fail to insert data in the Product table because the application tries to insert data in a different date format

      您无法在“产品”表中插入数据,因为应用程序尝试以其他日期格式插入数据
    • Suppose you have data in a table in format YYYY-MM-DD hh:mm: ss. You have a daily Sales report, and in that, you want data group by date. You want to have data in the report in format YYYY-MM-DD

      假设表中的数据格式为YYYY-MM-DD hh:mm:ss。 您有一个每日销售报告,在该报告中,您需要按日期分组数据。 您希望报表中的数据格式为YYYY-MM-DD

    We do face many such scenarios when we do not have date format as per our requirement. We cannot change table properties to satisfy each requirement. In this case, we need to use the built-in-functions in SQL Server to give the required date format.

    当我们没有要求的日期格式时,我们确实会遇到许多这样的情况。 我们不能更改表属性来满足每个要求。 在这种情况下,我们需要使用SQL Server中的内置函数来提供所需的日期格式。

    日期和时间的数据类型 (Data Types for Date and Time)

    We have the following SQL convert date and Time data types in SQL Server.

    在SQL Server中,我们具有以下SQL转换日期和时间数据类型。

    Date type

    Format

    Time

    hh:mm:ss[.nnnnnnn]

    Date

    YYYY-MM-DD

    SmallDateTime

    YYYY-MM-DD hh:mm:ss

    DateTime

    YYYY-MM-DD hh:mm:ss[.nnn]

    DateTime2

    YYYY-MM-DD hh:mm:ss[.nnnnnnn]

    DateTimeOffset

    YYYY-MM-DD hh:mm:ss[.nnnnnnn] [+|-]hh:mm

    日期类型

    格式

    时间

    hh:mm:ss [.nnnnnnn]

    日期

    YYYY-MM-DD

    SmallDateTime

    YYYY-MM-DD hh:mm:ss

    约会时间

    YYYY-MM-DD hh:mm:ss [.nnn]

    日期时间2

    YYYY-MM-DD hh:mm:ss [.nnnnnnn]

    DateTimeOffset

    YYYY-MM-DD hh:mm:ss [.nnnnnnn] [+ |-] hh:mm

    In SQL Server, we have used built-in functions such as SQL GETDATE() and GetUTCDate() to provide server date and format in various formats.

    在SQL Server中,我们使用了诸如SQL GETDATE()GetUTCDate()之类的内置函数来提供各种格式的服务器日期和格式。

    • SYSDATETIME(): To returns the server’s date and time
    • SYSDATETIME() :返回服务器的日期和时间
    • SYSDATETIMEOffset(): It returns the server’s date and time, along with UTC offset
    • SYSDATETIMEOffset() :它返回服务器的日期和时间以及UTC偏移量
    • GETUTCDATE(): It returns date and GMT (Greenwich Mean Time ) time
    • GETUTCDATE() :返回日期和格林威治标准时间(格林威治标准时间)
    • GETDATE(): It returns server date and time
    • GETDATE() :返回服务器日期和时间

    Execute the following queries to get output in respective formats.

    执行以下查询以获取相应格式的输出。

    1. Select SYSDATETIME() as [SYSDATETIME]
      
    2. Select SYSDATETIMEOffset() as [SYSDATETIMEOffset]
      
    3. Select GETUTCDATE() as [GETUTCDATE]
      
    4. Select GETDATE() as [GETDATE]
      

    SQL Convert Date - SQL Date functions

    SQL转换日期格式 (SQL Convert Date Formats)

    As highlighted earlier, we might need to format a date in different formats as per our requirements. We can use the SQL CONVERT() function in SQL Server to format DateTime in various formats.

    如前所述,我们可能需要根据要求以不同的格式格式化日期。 我们可以在SQL Server中使用SQL CONVERT()函数将DateTime格式化为各种格式。

    Syntax for the SQ: CONVERT() function is as follows.

    SQ: CONVERT()函数的语法如下。

    SELECT CONVERT (data_type(length)),Date, DateFormatCode)
    
    • Data_Type: We need to define data type along with length. In the date function, we use Varchar(length) data types Data_Type:我们需要定义数据类型以及长度。 在日期函数中,我们使用Varchar(length)数据类型
    • Date: We need to specify the date that we want to convert 日期 :我们需要指定要转换的日期
    • DateFormatCode: We need to specify DateFormatCode :我们需要指定DateFormatCode to convert a date in an appropriate form. We will explore more on this in the upcoming section DateFormatCode以适当的格式转换日期。 我们将在接下来的部分中进一步探讨

    Let us explore various date formats using SQL convert date functions.

    让我们使用SQL转换日期函数探索各种日期格式。

    First, we declare a variable to hold current DateTime using the SQL GETDATE() function with the following query.

    首先,我们使用SQL GETDATE()函数通过以下查询声明一个变量,以保存当前的DateTime。

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Print @Existingdate
    

    SQL Convert Date - SQL Date functions

    We can see various date formats in the following table. You can keep this table handy for reference purpose in the format of Date Time columns.

    我们可以在下表中看到各种日期格式。 您可以方便地以“日期时间”列的格式将此表用于参考。


    Date and Time Formats


    SQL convert date query


    Output


    Datetime format as
    MM/DD/YY

    Standard: U.S.A.

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,1) as [MM/DD/YY]
    



    Datetime format in
    YY.MM.DD format

    Standard: ANSI

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,2) as [YY.MM.DD]
    



    Datetime format in
    DD/MM/YY format

    Standard: British/French

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,3) as [DD/MM/YY]
    



    Datetime format in DD.MM.YY format

    Standard: German

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,4) as [DD.MM.YY]
    



    Datetime format in
    DD-MM-YY format

    Standard: Italian

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,5) as [DD-MM-YY]
    



    Datetime format in
    DD MMM YY format

    Standard: Shortened month name

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,6) as [DD MMM YY]
    



    Datetime format in
    MMM DD, YY format

    Standard: Shortened month name

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,7) as [MMM DD,YY]
    



    Datetime Format
    In HH:MM: SS

    Standard: 24 hour time

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,8) as [hh:mm:ss]
    



    Datetime format as
    [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]

    Standard: Default + milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,9) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]
    



    Datetime format in
    MM-DD-YY format

    Standard: USA

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,10) as [MM-DD-YY]
    



    Datetime format in
    YY/MM/DD format

    Standard: JAPAN

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,11) as [YY/MM/DD]
    



    Datetime format in
    YYMMDD format

    Standard: ISO

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,12) as [YYMMDD]
    



    Datetime format in
    DD MMM YYYY HH:MM:SS:MMM

    Standard: Europe default + milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,13) as [DD MMM YYYY HH:MM:SS:MMM]
    



    Datetime format in
    HH:MM:SS:MMM

    Standard:  24 hour time with milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,14) as [HH:MM:SS:MMM]
    



    Datetime format in
    YYYY-MM-DD HH:MM:SS

    Default: ODBC canonical

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,20) as [YYYY-MM-DD HH:MM:SS]
    



    Datetime format in
    YYYY-MM-DD HH:MM:SS.mmm

    Standard: ODBC canonical with milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,21) as [YYYY-MM-DD HH:MM:SS.mmm]
    



    Datetime format in
    mm/dd/yy hh:mm:ss (AM/PM)

    Standard: USA with Time AM/PM

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,22) as [mm/dd/yy hh:mm:ss (AM/PM)]
    



    Datetime format in
    [yyyy-mm-dd]

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,23) as [yyyy-mm-dd]
    



    Datetime format in
    [hh:mm:ss]

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,24) as [hh:mm:ss]
    



    Datetime format in
    [mm-dd-yyyy hh:mm:ss.mmm]

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,27) as [mm-dd-yyyy hh:mm:ss.mmm]
    



    Datetime format in
    [MMM DD YYYY HH: SS (AM/PM)]

    Standard: Default

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,100) as [MMM DD YYYY HH:SS (AM/PM)]
    



    Datetime format in
    [MM/DD/YYYY]

    Standard: USA

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,101) as [MM/DD/YYYY]
     
    



    Datetime format in
    [YYYY.MM.DD]

    Standard: ANSI

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,102) as [YYYY.MM.DD]
    



    Datetime format in
    DD/MM/YYYY format

    Standard: British/French

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,103) as [DD/MM/YYYY]
    



    Datetime format in
    DD.MM.YY format

    Standard: German

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,104) as [DD/MM/YYYY]
    



    Datetime format in
    DD-MM-YY format

    Standard: Italian

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,105) as [DD/MM/YYYY]
    



    Datetime format in
    DD MMM YYYY format

    Standard: Shortened month name

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,106) as [DD MMM YYYY]
    



    Datetime format in
    MMM DD,YYYY format

    Standard: Shortened month name

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,107) as [MMM DD,YYYY]
    



    Datetime Format
    In HH:MM: SS

    Standard: 24 hour time

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,108) as [HH:MM:SS]
    



    Datetime format as
    [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]

    Standard: Default + milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,109) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]
    



    Datetime format in
    MM- DD-YY format

    Standard: USA

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,110) as [MM-DD-YYYY]
    



    Datetime format in
    YYYY/MM/DD format

    Standard: JAPAN

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,111) as [YYYY/MM/DD]
    



    Datetime format in
    YYYYMMDD format

    Standard: ISO

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,112) as [YYYYMMDD]
    



    Datetime format in
    DD MMM YYYY HH:MM:SS: MMM

    Standard: Europe default + milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,113) as [DD MMM YYYY HH:MM:SS:MMM]
    



    Datetime format in
    HH:MM:SS: MMM

    Standard:  24 hour time with milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,114) as [DD MMM YYYY HH:MM:SS:MMM]
    



    Datetime format in
    YYYY-MM-DD HH:MM: SS

    Default: ODBC canonical

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,120) as [YYYY-MM-DD HH:MM:SS]
    



    Datetime format in
    YYYY-MM-DD HH:MM: SS.mmm

    Standard: ODBC canonical with milliseconds

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,121) as [YYYY-MM-DD HH:MM:SS.mmm]
    



    Datetime format in
    YYYY-MM-DDTHH:MM: SS.mmm

    Standard: ISO8601

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,126) as [yyyy-mm-ddThh:mi:ss.mmm]
    



    Datetime format in
    [DD MMM YYYY hh:mi:ss:mmm(AM/PM)]

    Standard: Islamic/Hijri date

    declare @Existingdate datetime
    Set @Existingdate=GETDATE()
    Select CONVERT(varchar,@Existingdate,130) as [dd mon yyyy hh:mi:ss:mmm(AM/PM)]
    



    日期和时间格式


    SQL转换日期查询


    输出量


    日期时间格式为
    MM / DD / YY

    标准 :美国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,1) as [MM/DD/YY]



    日期时间格式
    YY.MM.DD格式

    标准 :ANSI

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,2) as [YY.MM.DD]



    日期时间格式
    DD / MM / YY格式

    标准 :英式/法式

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,3) as [DD/MM/YY]



    日期时间格式为DD.MM.YY

    标准 :德国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,4) as [DD.MM.YY]



    日期时间格式
    DD-MM-YY格式

    标准 :意大利语

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,5) as [DD-MM-YY]



    日期时间格式
    DD MMM YY格式

    标准 :缩短月份名称

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,6) as [DD MMM YY]



    日期时间格式
    MMM DD,YY格式

    标准 :缩短月份名称

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,7) as [MMM DD,YY]



    日期时间格式
    在HH:MM:SS

    标准时间:24小时

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,8) as [hh:mm:ss]



    日期时间格式为
    [MMM DD YYYY hh:mm:ss:mmm(AM / PM)]

    标准 :默认+毫秒

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,9) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]



    日期时间格式
    MM-DD-YY格式

    标准 :美国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,10) as [MM-DD-YY]



    日期时间格式
    YY / MM / DD格式

    标准 :日本

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,11) as [YY/MM/DD]



    日期时间格式
    YYMMDD格式

    标准 :ISO

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,12) as [YYMMDD]



    日期时间格式
    DD MMM YYYY HH:MM:SS:MMM

    标准:欧洲默认值+毫秒

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,13) as [DD MMM YYYY HH:MM:SS:MMM]



    日期时间格式
    HH:MM:SS:MMM

    标准: 24小时制,以毫秒为单位

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,14) as [HH:MM:SS:MMM]



    日期时间格式
    YYYY-MM-DD HH:MM:SS

    默认值: ODBC规范

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,20) as [YYYY-MM-DD HH:MM:SS]



    日期时间格式
    YYYY-MM-DD HH:MM:SS.mmm

    标准 :ODBC规范(以毫秒为单位)

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,21) as [YYYY-MM-DD HH:MM:SS.mmm]



    日期时间格式
    mm / dd / yy hh:mm:ss(AM / PM)

    标准 :美国时间为AM / PM

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,22) as [mm/dd/yy hh:mm:ss (AM/PM)]



    日期时间格式
    [yyyy-mm-dd]

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,23) as [yyyy-mm-dd]



    日期时间格式
    [hh:mm:ss]

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,24) as [hh:mm:ss]



    日期时间格式
    [mm-dd-yyyy hh:mm:ss.mmm]

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,27) as [mm-dd-yyyy hh:mm:ss.mmm]



    日期时间格式
    [MMM DD YYYY HH:SS(AM / PM)]

    标准 :默认

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,100) as [MMM DD YYYY HH:SS (AM/PM)]



    日期时间格式
    [MM / DD / YYYY]

    标准 :美国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,101) as [MM/DD/YYYY]



    日期时间格式
    [YYYY.MM.DD]

    标准 :ANSI

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,102) as [YYYY.MM.DD]



    日期时间格式
    DD / MM / YYYY格式

    标准 :英式/法式

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,103) as [DD/MM/YYYY]



    日期时间格式
    DD.MM.YY格式

    标准 :德国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,104) as [DD/MM/YYYY]



    日期时间格式
    DD-MM-YY格式

    标准 :意大利语

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,105) as [DD/MM/YYYY]



    日期时间格式
    DD MMM YYYY格式

    标准 :缩短月份名称

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,106) as [DD MMM YYYY]



    日期时间格式
    MMM DD,YYYY格式

    标准 :缩短月份名称

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,107) as [MMM DD,YYYY]



    日期时间格式
    在HH:MM:SS

    标准时间:24小时

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,108) as [HH:MM:SS]



    日期时间格式为
    [MMM DD YYYY hh:mm:ss:mmm(AM / PM)]

    标准 :默认+毫秒

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,109) as [MMM DD YYYY hh:mm:ss:mmm(AM/PM)]



    日期时间格式
    MM- DD-YY格式

    标准:美国

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,110) as [MM-DD-YYYY]



    日期时间格式
    YYYY / MM / DD格式

    标准 :日本

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,111) as [YYYY/MM/DD]



    日期时间格式
    YYYYMMDD格式

    标准 :ISO

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,112) as [YYYYMMDD]



    日期时间格式
    DD MMM YYYY HH:MM:SS:MMM

    标准:欧洲默认值+毫秒

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,113) as [DD MMM YYYY HH:MM:SS:MMM]



    日期时间格式
    HH:MM:SS:MMM

    标准: 24小时制,以毫秒为单位

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,114) as [DD MMM YYYY HH:MM:SS:MMM]



    日期时间格式
    YYYY-MM-DD HH:MM:SS

    默认值: ODBC规范

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,120) as [YYYY-MM-DD HH:MM:SS]



    日期时间格式
    YYYY-MM-DD HH:MM:SS.mmm

    标准: ODBC规范(以毫秒为单位)

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,121) as [YYYY-MM-DD HH:MM:SS.mmm]



    日期时间格式
    YYYY-MM-DDTHH:MM:SS.mmm

    标准 :ISO8601

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,126) as [yyyy-mm-ddThh:mi:ss.mmm]



    日期时间格式
    [DD MMM YYYY hh:mi:ss:mmm(AM / PM)]

    标准 :伊斯兰教/回历

    declare @Existingdate datetime
     Set @Existingdate=GETDATE()
     Select CONVERT(varchar,@Existingdate,130) as [dd mon yyyy hh:mi:ss:mmm(AM/PM)]


    In the table, we can see various formats to SQL convert date as per your requirements. In the following table, you can see all SQL date formats together.

    在表中,我们可以根据您的要求看到各种格式SQL转换日期。 在下表中,您可以一起查看所有SQL日期格式。

    Let us next explore a function that is useful for SQL convert date.

    接下来让我们探讨一个对SQL转换日期有用的函数。

    日期 (DATEADD)

    We can use the SQL DATEADD function to add a particular period to our date. Suppose we have a requirement to add 1 month to current date. We can use the SQL DATEADD function to do this task.

    我们可以使用SQL DATEADD函数将一个特定的时期添加到我们的日期中。 假设我们有一个要求将1个月添加到当前日期。 我们可以使用SQL DATEADD函数来完成此任务。

    The syntax for SQL DATEADD function is as following

    SQL DATEADD函数的语法如下

    DATEADD(interval, number, date)
    

    Interval: We can specify an interval that needs to be added in the specified date. We can have values such as year, quarter, month, day, week, hour, minute etc.

    间隔:我们可以指定一个需要在指定日期添加的间隔。 我们可以使用诸如年,季度,月,日,星期,小时,分钟等值。

    Number: It specifies the number of the interval to add. For example, if we have specified interval as Month and Number as 2, it means 2 months needs to be added in date.

    Number:指定要添加的时间间隔的编号。 例如,如果我们将间隔指定为“月”并将数字指定为2,则意味着需要在日期中添加2个月。

    In the following query, we want to add 2 months in the current date.

    在以下查询中,我们要在当前日期添加2个月。

    SELECT GETDATE() as Currentdate
     
    SELECT DATEADD(month, 2, GETDATE()) AS NewDate;
    

    You can see the output in the following screenshot.

    您可以在以下屏幕截图中看到输出。

    DateADD function SQL -  - SQL Convert Date

    Similarly, lets us add 1 year to current date using the following query.

    同样,让我们​​使用以下查询将1年添加到当前日期。

    select GETDATE() as Currentdate
     
    SELECT DATEADD(Year, 1, GETDATE()) AS NewDate;
     
    

    SQL convert date - DateADD function SQL

    We can combine the SQL DATEADD and CONVERT functions to get output in desired DateTime formats. Suppose, in the previous example; we want a date format in of MMM DD, YYYY. We can use the format code 107 to get output in this format.

    我们可以结合使用SQL DATEADDCONVERT函数以所需的DateTime格式获取输出。 假设在前面的示例中; 我们想要的日期格式为MMM DD,YYYY。 我们可以使用格式代码107获得此格式的输出。

    Execute the following code to get New date and ConvertedDate.

    执行以下代码以获取新日期和ConvertedDate。

    SELECT 
     DATEADD(YEAR,1,GETDATE()) AS [NewDate]
     ,CONVERT(varchar(110),DATEADD(YEAR,1,GETDATE()),107) AS [ConvertedDate]
    

    结论 (Conclusion)

    In this article, we explored various SQL convert date formats. It allows getting a date in required format with Covert function easily. You can use this article to take a reference for all date formats and use in your queries.

    在本文中,我们探讨了各种SQL转换日期格式。 通过隐蔽功能,可以轻松获取所需格式的日期。 您可以使用本文作为所有日期格式的参考,并在查询中使用。

    翻译自: https://www.sqlshack.com/sql-convert-date-functions-and-formats/

    sql日期格式转换函数

    展开全文
  • Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AMSelect CONVERT(varchar(100), GETDATE(), 1): 05/16/06Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16Select CONVERT(varchar(100)...
  • Mysql和SQL Server中的格式转换函数

    千次阅读 热门讨论 2018-03-27 12:03:56
    小编最近在项目中学习大佬们的代码,看到sql查询语句跟我见过的有些不一样,我就知道学习的机会又来了。 正文 Sql Server中的格式转换功能 &nbsp;&nbsp;&nbsp;&nbsp; Sql语句中常用的类型...
  • SQL中“||”的作用

    万次阅读 2017-03-16 17:43:43
    看以下SQL语句, RTRIM (table1.string)  || ' '  || (SELECT stringNM  FROM table2  WHERE table2.string = table1.string) 其中的 || 是什么意思呢? 该SQL语句中||的
  • 关于group by的用法 原理

    万次阅读 多人点赞 2018-06-14 00:26:30
    写在前面的话:用了好久group by,今天早上一觉醒来,突然感觉group by好陌生,总有个筋别不过来,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by ...
  • sql优化的几种方法

    万次阅读 多人点赞 2017-08-17 20:59:55
    sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上...
  • SQL数据定义语言(DDL)

    千次阅读 2016-10-19 16:48:53
    数据库模式定义语言DDL(DataDefinition Language),是用于描述数据库中要存储的现实世界实体的语言。一个数据库模式包含该数据库中所有实体的描述定义。这些定义包括结构定义、操作方法定义等。...
  • sql server使用教程(图文)

    万次阅读 2016-12-05 08:38:07
    首先打开SQL Server Management Studio 打开后选择服务器名称中的数据库,选择第一个 点击链接 选择数据库,右键新建数据库 点击上方的新建查询 就可以使用sql server语句进行数据库表的创建和操作。
  • SqlServer2019安装教程-自定义安装

    万次阅读 多人点赞 2019-11-01 02:36:34
    SqlServer2019安装教程-基本安装:https://blog.csdn.net/qq_33556442/article/details/102848891 搜索SqlServer2019 进入官方网站,点击下载(时间稍微有点长) 选择下载的环境,这里是Windows的下载(时间...
  • SQL Server2012使用教程(图文详情)

    万次阅读 多人点赞 2018-10-08 22:27:54
    SQL Server2012的安装:...进入SQL Server的可视化操作界面,选择连接 点击连接后进入如下界面 选中数据库,点击右键创建一个数据库 就暂且创建一个学生信息管理数据库,名...
  • SQLServer安装教程(史上最详细版本)

    万次阅读 多人点赞 2019-06-22 13:34:53
    下载 安装包已上传至百度网盘,安装包里已含注册码,下载地址(含注册码) 链接:...提取码:6txl 安装过程 1.选择解压目录 ... 3.开始安装 ...全新安装或向现有安装添加功能 ...输入产品秘钥:PTTFM-X46...
  • PL/SQL Developer下载、安装、使用教程

    万次阅读 多人点赞 2018-07-07 15:52:12
    1.官方下载地址:https://www.allroundautomations.com/bodyplsqldevreg.html 2.根据自己的系统选择相应版本下载: 3.以后安装,和普通软件安装一样 4.安装好以后打开软件然后输入相应的提示,注意如果username是...
  • SQL server 2008 R2 图文安装教程(附资源)

    万次阅读 多人点赞 2020-06-24 18:25:07
    安装环境及资源 系统环境:Windows 10 Enterprise 64位 SQL版本:sql_server_2008_r2_enterprise ( 网盘下载 密码: xexg ) NET Framework 3.5:( 网盘下载 密码: cvbf ) 安装过程 ... 若打开后...
  • 傻瓜式的安装,资源我都有呀,唯一的坑点是其中一步要把SQL server management studio选上去,默认是不装这个的,那个步骤上本来显示的是叉,确实有问题,其余的直接点下一步就可以了数据库导入 直接数据库附加,...
1 2 3 4 5 ... 20
收藏数 136,642
精华内容 54,656
关键字:

sql