SQL对日期相关操作ITeye - 凯发娱乐

SQL对日期相关操作ITeye

2019年02月27日11时17分34秒 | 作者: 傲菡 | 标签: 本季度,项目,天数 | 浏览: 1596

 

项目开发中,对SQL的查询经常会涉及到日期的计算上,今日就来简略概括一下相关日期操作,首要分为MySQL和MSSQL的,Oracle在项目中暂时还没真实运用,所以暂时先不概括,等用届时再依据实践项目开发状况进行概括;

MSSQL:

1、 求相差天数

select datediff(day,2012-01-01,getdate()) as 相差天数; 8

 

2、求本年的第一天

SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) as 本年第一天; 2012-01-01 00:00:00.000

 

declare @dt datetime
set @dt=GETDATE()
select CONVERT(char(5),@dt,120)+1-1 as 本年的第一天;2012-1-1

 

 3、求本年的最终一天

SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1,0)) as 本年最终一天;2012-12-31 23:59:59.997

 

 或

declare @dt datetime
set @dt=GETDATE()
SELECT CONVERT(char(5),@dt,120)+12-31 as 本年的最终一天; 2012-12-31

 

 4、上一年的最终一天

 

SELECT dateadd(ms,-3,DATEADD(yy,DATEDIFF(yy,0,getdate()), 0)) as 上一年的最终一天;2011-12-31 23:59:59.997

 

 5、求本季度第一天

SELECT DATEADD(yy,DATEDIFF(yy,0,getdate()),0) as 本季度第一天; 2012-01-01 00:00:00.000

 

 或

declare @dt datetime
set @dt=GETDATE()
SELECT 
CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt)-2,@dt),120)+1) as 本季度的第一天;2012-01-01 00:00:00.000

 

6、求本季度最终一天

declare @dt datetime
set @dt=GETDATE()
SELECT CONVERT(datetime,
 CONVERT(char(8),
 DATEADD(Month,
 DATEPART(Quarter,@dt)*3-Month(@dt),
 @dt),
 120)
 +CASE WHEN DATEPART(Quarter,@dt) in(1,4)
 THEN 31ELSE 30 END) as 本季度最终一天;2012-03-31 00:00:00.000

 

 或

declare @dt datetime
set @dt=getdate()
SELECT DATEADD(Day,-1,
 CONVERT(char(8),
 DATEADD(Month,
 1+DATEPART(Quarter,@dt)*3-Month(@dt),
 @dt),
 120)+1) as 本季度最终一天;2012-03-31 00:00:00.000

 

 7、求本月第一天:

SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) as 本月第一天;2012-01-01 00:00:00.000

 或

declare @dt datetime
set @dt=getdate()
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+1) as 本月第一天;2012-01-01 00:00:00.000

 

8、求本月最终一天:

SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+1,0)) as 本月最终一天;2012-01-31 23:59:59.997

 

 或

declare @dt datetime
set @dt=GETDATE()
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+1) as 本月最终一天;2012-01-31 00:00:00.000

 

declare @dt datetime
set @dt=GETDATE()
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt)) as 本月最终一天;2012-01-31 10:18:32.753

 

 9、上个月最终一天

SELECT dateadd(ms,-3,DATEADD(mm,DATEDIFF(mm,0,getdate()),0)) as 上个月的最终一天;2011-12-31 23:59:59.997

 

10、本月的第一个星期一

select DATEADD(wk, 
DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())),0) as 本月的第一个星期一;2012-01-02 00:00:00.000

 

11、本周的星期一

SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),0) as 本周的星期一;2012-01-09 00:00:00.000
SELECT DATEADD(wk,DATEDIFF(wk,0,getdate()),1) as 本周的星期二;2012-01-10 00:00:00.000

 

12、当天的深夜

SELECT DATEADD(dd,DATEDIFF(dd,0,getdate()), 0) as 当天的深夜;2012-01-09 00:00:00.000

 

13、查询本周记载

select * from tableName where DATEPART(wk, theDate) = DATEPART
(wk, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE());

 

14、查询本季度记载

select * from tableName where DATEPART(qq, theDate) = DATEPART
(qq, GETDATE()) and DATEPART(yy, theDate) = DATEPART(yy, GETDATE())

 

15、获取当月总天数

select DATEDIFF(dd,getdate(),DATEADD
(mm, 1, getdate()))

 

 或

select datediff(day,
dateadd(mm, datediff(mm,,getdate()), ),
dateadd(mm, datediff(mm,,getdate()), 1900-02-01))

 

 16、获取当前为星期几

select DATEPART(dw, GETDATE())2,周日为1

 这儿简略对DatePart函数做个阐明,第一个参数表明要传回日期部分的参数,第二个参数表明日期;

 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    SQL对日期相关操作ITeye

    本季度,项目,天数
  • 2

    SQL对日期相关操作ITeye

    本季度,项目,天数
  • 3

    MongoDB 入门ITeye

    发动,效劳,指令
  • 4

    MongoDB 入门ITeye

    发动,效劳,指令
  • 5

    imp导入报表空间不存在的过错ITeye

    空间,数据库,数据文件
  • 6

    ORACLE 最大衔接ITeye

    数据库,修正,检查
  • 7
  • 8
  • 9
  • 10