日期转换函数 简单记录:
常用的一般是: yyyyMMdd yyyy-MM-dd yyyy/MM/dd
sqlserver 默认日期格式可通过getdate()查看一下。
Date转字符:
Select CONVERT(varchar(255), GETDATE(), 14)--10:57:46:967
Select CONVERT(varchar(255), GETDATE(), 24)--10:57:47
Select CONVERT(varchar(255), GETDATE(), 23)--2020-02-14
Select CONVERT(varchar(255), GETDATE(), 111)--2020/02/14
Select CONVERT(varchar(255), GETDATE(), 112) --20200214
Select CONVERT(varchar(255), GETDATE(), 120)--2020-02-14 10:57:49
Select CONVERT(varchar(255), GETDATE(), 121)--2020-02-14 10:47:11.413
Select CONVERT(varchar(20), cast('20200214' as datetime),120) --2020-02-14 00:00:00
格式主要是对于字符串的显示来说的。在字符串与date的转换中,直接会转换为默认的格式 。日期型的字符直接插入赋值date类型的字段中是允许的,系统会进行convert的默认转换。
对于不同长度的日期型字符串,转换为格式化日期要注意,下面的转换会导致错误:Select CONVERT(date, '2020-02-14' ,112) --error .
可以CONVERT(varchar(8), cast(GetDate() as date), 112) 转换
对应长日期的可以根据varchar的长度截取。112 与12的区别主要是年分使用4位标记还是2位标记。
比较日期型字符串 与日期型字段,如果用字符串比较需要将格式转换为一致。
Cast(源值 AS 目标数据类型) 转换函数 :
在数值与字符的简单转换中可以使用。例如:CAST(123.4 AS varchar)
如果varchar长度小于前者则会溢出报错:CAST(123.45 AS varchar(5)) --Arithmetic overflow error converting numeric to data type varchar
LEFT:返回字符串中从左边开始指定个数字符。
LEFT(源字符串,要提取的字符个数);
left('abcdef',3)--abc
RIGTH:返回字符串从右边开始指定个数字符。
RIGHT(源字符串,要提取的字符个数);
right('abcdef',3)--def
SubString(expression, startPos, Len): 截取一个expression中的其中一部分,其中1表示的是第一字符位置.
SubString('abcdedf', 1, 3) --从第一个字符开始,从expression中截取3个字符长度的字符串。显示为:abc
1.INSERT INTO SELECT语句
语句形式为:Insert into tmpTable(field1,field2,...) Select field1, field2,... from sourceTable
或者:Insert into tmpTable Select * from sourceTable
注意: 要求目标表tmpTable必须存在.。并且字段field,field2...也须存在
2.SELECT INTO FROM语句
语句形式为:SELECT field1, field2 into tmpTable from sourceTable ----(select * into tmpTable from table)
要求目标表tmpTable不存在,在插入时会自动创建表tmpTable,并将sourceTable 中指定字段数据复制到tmpTable中。
修改表字段的语句:
1, 增加字段:
alter table XXX add FFF datatype /not null default VVV
2, 删除字段:
alter table XXX drop column FFF
3, 修改字段名:
alter table XXX rename column FFFA to FFFB
4, 修改字段类型、长度:
alter table XXX alter column FFF datatype/(newlen) /not null
SQL SERVER中的自增列默认是从1开始自增,如果我们想让它从指定的种子id开始自增,可以执行:
DBCC CHECKIDENT(TableaName, RESEED, id)