热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

时间日期函数,类型转化,子查询,分页查询

1.时间日期函数:SETDATEFIRST1--设置星期一为第一天--datepart函数,返回时间日期中的某一个部分--参数1是指返回哪一个部分,dw表示dayofweek--参

1.时间日期函数:

SET DATEFIRST 1 --设置星期一为第一天
--datepart函数,返回时间日期中的某一个部分
--参数1是指返回哪一个部分,dw表示dayofweek
--参数2是指哪个时间日期里面去返回
--datefirst是系统常量,在使用时需要加上@@
SELECT @@DATEFIRST AS ‘1st Day‘, DATEPART(dw, GETDATE()) AS ‘Today‘
--getdate指在执行时获取当前系统时间
SELECT GETDATE()--在执行时取当前系统时间


--dateadd 对某一个部分添加或者减去多少时间
--参数1 是对哪一个部分进行添加或减少
--参数3 是在哪一个时间日期上进行增加或减少
--参数2 是增加或减去多少
select DATEADD(YEAR,-2,‘2015-11-20‘)
select DATEADD(MONTH,3,‘2015-11-20‘)
select DATEADD(DAY,5,‘2015-11-20‘)

--datediff 算时间差 different 不同的,相差的
--参数1 是指对哪一个部分进行算法
--参数2 是开始的时间日期
--参数3 是结束的日期
select DATEDIFF(YEAR,‘2011-1-2‘,‘2015-2-2‘) --年份相差
select DATEDIFF(MONTH,‘2011-1-2‘,‘2015-2-2‘)--月份相差(算上中间所有月份)
select DATEDIFF(DAY,‘2011-1-2‘,‘2015-2-2‘)--日相差(算上中间所有日)

--计算恋爱的天数
declare @startday varchar(50) --声明变量时需要添加数据类型,变量名前加@
set @startday = ‘2008-8-8‘ --设置变量的值
--getdate是获取当前系统时间
select DATEDIFF(DAY,@startday,GETDATE()) as 恋爱天数

--datepart 返回时间日期的某一个部分
--参数1是返回的哪一个部分
--参数2是以哪个日期作为被计算的日期
select DATEPART(YEAR,‘2008-8-8‘)--返回年
select DATEPART(DY,‘2008-8-8‘)--返回dayofyear 这一年的第几天
select DATEPART(QQ,‘2008-8-8‘)--返回季度 共四个季度

--day month year 相当于上面的datepart
--返回天,月,年
select DAY(‘2008-8-8‘)
select year(‘2008-8-8‘)
select month(‘2008-8-8‘)

--isdate 判断时间日期格式是否是正确
--返回值为1表示正确
--返回值为0表示错误
select ISDATE(‘2012-2-29‘)
select ISDATE(‘2008-80-8‘)

--sysdatetime 系统精确时间
select SYSDATETIME()
SELECT GETDATE()-- 区别是精确与否

2.类型转换:

--数据类型转换 cast convert
--cast 先写被转换的value + as + 被转换成的类型
select CAST(1.73 as int)
select CAST(1.73 as varchar(50))
select CAST(1.73333333 as decimal(18,2))
select cast(CAST(‘1.78‘ as decimal(18,2)) as int)
select CAST(‘1.78‘ as decimal(18,2))
--convert 参数1是需要转换成为的类型,参数2是需要被转换的value
select CONVERT(int , ‘87‘)
select CONVERT(decimal(18,2) , ‘87.8787‘)--在精确后面位数的时候会自动四舍五入
select CONVERT(varchar(50) , 342523.234)

3.子查询:

use Student
go
--需要建立两个表,一个部门表,一个人员表
--部门:部门的编号(主键),部门的名称,部门的职责
--人员:人员的编号,姓名,年龄,性别,cid,所属部门编号


create table bumen
(
bcode int primary key,
bname varchar(50),
bzhi varchar(50)
)
go
create table ren
(
code int identity(1,1),
--表示自增长列,从1开始,每次增加1
--在添加values时,不需要添加此列
name varchar(50),
age int,
sex char(10),
cid varchar(50),
bumen int
)
go

insert into bumen values(1001,‘人事部‘,‘负责人员面试考核‘)
insert into bumen values(1002,‘市场部‘,‘负责开拓市场‘)
insert into bumen values(1003,‘销售部‘,‘负责产品销售‘)
insert into bumen values(1004,‘生产部‘,‘负责产品生产‘)
insert into bumen values(1005,‘质检部‘,‘负责产品质量检验‘)
go

insert into ren values(‘张三‘,24,‘男‘,‘370303199903044440‘,1002)
insert into ren values(‘李四‘,25,‘女‘,‘370303199905044440‘,1001)
insert into ren values(‘王五‘,26,‘男‘,‘370303199907044440‘,1002)
insert into ren values(‘赵六‘,27,‘女‘,‘370303199908044440‘,1001)
insert into ren values(‘冯七‘,28,‘男‘,‘370303199909044440‘,1003)
insert into ren values(‘钱大‘,29,‘女‘,‘370303199901044440‘,1001)
insert into ren values(‘赵二‘,22,‘男‘,‘370303199911044440‘,1003)
insert into ren values(‘陈赫‘,31,‘男‘,‘370303199912044440‘,1001)
insert into ren values(‘王祖蓝‘,32,‘女‘,‘370303199904044440‘,1004)
insert into ren values(‘宝贝儿‘,33,‘男‘,‘370303199903034440‘,1004)
insert into ren values(‘李晨‘,34,‘女‘,‘370303199903224440‘,1004)
insert into ren values(‘范爷‘,35,‘男‘,‘370303199903234440‘,1005)
insert into ren values(‘任泉‘,36,‘男‘,‘370303199903254440‘,1002)
insert into ren values(‘李冰冰‘,37,‘男‘,‘370303199903264440‘,1003)
insert into ren values(‘冯小刚‘,38,‘女‘,‘370303199903274440‘,1005)
insert into ren values(‘郭德纲‘,39,‘男‘,‘370303199903284440‘,1004)
insert into ren values(‘赵本山‘,40,‘女‘,‘370303199903294440‘,1004)
go


select *from bumen
select * from ren
--查看销售部有哪些人
select bcode from bumen where bname=‘销售部‘
select * from ren where bumen =1003
--子查询(嵌套查询)
select * from ren where bumen =(select bcode from bumen where bname=‘销售部‘)

--查看张三所属的部门职责
select bumen from ren where name =‘张三‘
select bzhi from bumen where bcode =1002
--子查询
select bzhi as 部门职责 from bumen where bcode =(select bumen from ren where name =‘张三‘)

--查询部门人数最多的部门里面年龄最大的人员的所有信息
select top 1 bumen , COUNT(*) from ren group by bumen order by COUNT(*) desc
select top 1 * from ren where bumen =1004 order by age desc
--子查询
select top 1 * from ren where bumen =(select top 1 bumen from ren group by bumen order by COUNT(*) desc) order by age desc

--按照年龄排序,从小到大,不要前五个人的
select * from ren where code not in (select top 5 code from ren order by age)

--找男职员里面年纪最大的全部信息
select *from ren where code =( select top 1 code from ren where sex=‘男‘ order by age desc)

4.分页查询:

--分页查询 五条作为一页显示
--前五条
select top 5*from ren
--第6-10条
select top 5*from ren where code not in(select top 5 code from ren)
--第11-15条
select top 5*from ren where code not in(select top 10 code from ren)
--第16、17条(最后一次时可以把前面的top 5删除)
select *from ren where code not in(select top 15 code from ren)

--想在一开始就想知道能分成几页(五条一页)
select CEILING(COUNT(*)/5.0) from ren--注意要加上.0


select *from bumen
select * from ren
--将人员表内部门的编码转换成部门名称查询出来
select code,name ,age,sex,cid ,(select bname from bumen where bcode = ren.bumen) as 部门 from ren

--查询销售部里的年龄大于30岁的人的所有信息
select * from ren where age>30 and bumen =(select bcode from bumen where bname=‘销售部‘)
--exists 存在。与上句代码作用一致,不常用
select * from ren where exists(select * from bumen where bcode=ren.bumen and bname= ‘销售部‘) and age>30

时间日期函数,类型转化,子查询,分页查询


推荐阅读
  • POJ 2482 星空中的星星:利用线段树与扫描线算法解决
    在《POJ 2482 星空中的星星》问题中,通过运用线段树和扫描线算法,可以高效地解决星星在窗口内的计数问题。该方法不仅能够快速处理大规模数据,还能确保时间复杂度的最优性,适用于各种复杂的星空模拟场景。 ... [详细]
  • Python 伦理黑客技术:深入探讨后门攻击(第三部分)
    在《Python 伦理黑客技术:深入探讨后门攻击(第三部分)》中,作者详细分析了后门攻击中的Socket问题。由于TCP协议基于流,难以确定消息批次的结束点,这给后门攻击的实现带来了挑战。为了解决这一问题,文章提出了一系列有效的技术方案,包括使用特定的分隔符和长度前缀,以确保数据包的准确传输和解析。这些方法不仅提高了攻击的隐蔽性和可靠性,还为安全研究人员提供了宝贵的参考。 ... [详细]
  • 在Django中提交表单时遇到值错误问题如何解决?
    在Django项目中,当用户提交包含多个选择目标的表单时,可能会遇到值错误问题。本文将探讨如何通过优化表单处理逻辑和验证机制来有效解决这一问题,确保表单数据的准确性和完整性。 ... [详细]
  • 单链表的高效遍历及性能优化策略
    本文探讨了单链表的高效遍历方法及其性能优化策略。在单链表的数据结构中,插入操作的时间复杂度为O(n),而遍历操作的时间复杂度为O(n^2)。通过在 `LinkList.h` 和 `main.cpp` 文件中对单链表进行封装,我们实现了创建和销毁功能的优化,提高了单链表的使用效率。此外,文章还介绍了几种常见的优化技术,如缓存节点指针和批量处理,以进一步提升遍历性能。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • Java环境中Selenium Chrome驱动在大规模Web应用扩展时的性能限制分析 ... [详细]
  • 本文详细介绍了在 SQL Server 2005 中优化和实现分页存储过程的方法。通过创建一个名为 `[dbo].[GetUsers]` 的存储过程,该过程接受两个参数:`@RowIndex`(当前指定的页数)和 `@RecordCount`(每页显示的记录数)。文章不仅提供了具体的代码示例,还深入探讨了性能优化技巧,包括索引使用和查询优化策略,以提高分页查询的效率和响应速度。 ... [详细]
  • 本文介绍了如何在 ASP.NET 中设置 Excel 单元格格式为文本,获取多个单元格区域并作为表头,以及进行单元格合并、赋值、格式设置等操作。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 如果应用程序经常播放密集、急促而又短暂的音效(如游戏音效)那么使用MediaPlayer显得有些不太适合了。因为MediaPlayer存在如下缺点:1)延时时间较长,且资源占用率高 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 在分析和解决 Keepalived VIP 漂移故障的过程中,我们发现主备节点配置如下:主节点 IP 为 172.16.30.31,备份节点 IP 为 172.16.30.32,虚拟 IP 为 172.16.30.10。故障表现为监控系统显示 Keepalived 主节点状态异常,导致 VIP 漂移到备份节点。通过详细检查配置文件和日志,我们发现主节点上的 Keepalived 进程未能正常运行,最终通过优化配置和重启服务解决了该问题。此外,我们还增加了健康检查机制,以提高系统的稳定性和可靠性。 ... [详细]
  • 在Linux系统中,网络配置是至关重要的任务之一。本文详细解析了Firewalld和Netfilter机制,并探讨了iptables的应用。通过使用`ip addr show`命令来查看网卡IP地址(需要安装`iproute`包),当网卡未分配IP地址或处于关闭状态时,可以通过`ip link set`命令进行配置和激活。此外,文章还介绍了如何利用Firewalld和iptables实现网络流量控制和安全策略管理,为系统管理员提供了实用的操作指南。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 投融资周报 | Circle 达成 4 亿美元融资协议,唯一艺术平台 A 轮融资超千万美元 ... [详细]
author-avatar
冬日暖光816
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有