2016.6.3类型强制转换,连接,生成数字表,子查询
Posted 刁民923
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016.6.3类型强制转换,连接,生成数字表,子查询相关的知识,希望对你有一定的参考价值。
--日期问题
select *
from orders
where OrderDate > ‘20030525‘--字符串表示日期
--cast 强制转换
select *
from orders
where OrderDate >cast( ‘20030525‘ as datetime)
--datepart 取日期中的一部分
select getdate()--计算机当前的时间
select getdate(),
datepart(year,getdate()),
datepart(month,getdate()),
datepart(day,getdate()),
datepart(hour,getdate())
--特殊
select datepart(dayofyear,getdate()),--从年初到现在的天数
datepart(weekday,getdate()),--星期几,从星期天开始为1
datepart(week,getdate())--今年的第几周
--日期的加减
--单位
select getdate(),dateadd(month,2,getdate()),
dateadd(week,3,getdate())
--减法
select datediff(year,‘19491001‘,getdate())
--cast和convert函数
--类型转换
select getdate(),convert(nvarchar,getdate(),112)
select convert(int,‘99‘)+ 100
select cast(‘99‘ as int)+ 100
--联合查询
--cross join
--做一个没有什么意义的交叉连接
select CityName ,OrderNum
from city cross join orders
--内连接,必须符合特定条件的组合
select OrderNum ,ProdNum ,DistriNum
from orders inner join products
on orders.OrderNum =products.ProdNum
--生成数字表
use tempdb
create table digits
(
digit int
);
select *
from digits;
--插入10条记录
insert into digits (digit)
values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
--生成数字
select d1.digit,d2.digit,d3.digit*100+d1.digit * 10 + d2.digit
from digits d1 cross join digits d2 cross join digits d3
use [C:\USERS\LENOVO\DOCUMENTS\EXAM_SQLBAK_DATA.MDF]
--子查询,嵌在其他查询中的查询叫子查询,用括号括起来
select max(DistriNum)
from distributors
select BossName,DistriNum,CityCode
from distributors
where CityCode =
(
select CityCode
from distributors
where DistriNum =
(
select max(DistriNum )
from distributors
)
)
order by DistriNum desc
--独立子查询
--相关子查询
select DistriNum ,BossName ,CityCode,
(
select count(*)
from distributors.CityCode
where distributors .CityCode.CityCode =distributors .CityCode
)
from distributors
--3.9
--多值子查询
select OrderNum ,PaidDate
from orders
where PaidDate in
(
select PaidDate
from orders
)
以上是关于2016.6.3类型强制转换,连接,生成数字表,子查询的主要内容,如果未能解决你的问题,请参考以下文章