代码改变世界

sql server日期相关函数

2020-05-03 17:20  youxin  阅读(442)  评论(0编辑  收藏  举报

 

选择昨天:

DECLARE @Yesterday date

SET @Yesterday = DATEADD(DAY,-1,GETDATE())

 输出:

2020-05-02

 

把date转成数字:

-- 获取时间
SET @Yesterday = DATEADD(DAY,-1,GETDATE())
SET @DateID = CAST(CAST(@Yesterday AS FLOAT) AS INT)

 

GetDate()函数

SELECT GETDATE() AS CurrentDateTime
结果:

CurrentDateTime
2008-12-29 16:25:46.635
注释:上面的时间部分精确到毫秒。

 

 

 

datepart函数:

Datepart()返回代表指定日期的指定日期部分的整数

语法:Datepart(datepart,date)  返回类型:int

 

SELECT DATEPART(yyyy,create_at) AS OrderYear,
DATEPART(mm,create_at) AS OrderMonth,
DATEPART(dd,create_at) AS OrderDay
FROM xxx
WHERE id=10

 

SQL server从datetime提取年月日

需要用到convert函数:

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)

data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

 

120 或者 20 yyyy-mm-dd hh:mi:ss(24h)

 

我们只想要提取yyyy--mm-dd,用:

select convert(varchar(10),create_at,120) from xxx  where id=10 (长度为10截取前10位)

想要带上时分秒:

select convert(varchar,create_at,120) from xxx  where id=10

2020-04-29 16:46:43

只想要年月:

--按月
select convert(nvarchar(7),GETDATE(),120)

 2020-04

 

利用cursor修改数据


DECLARE @beforeday2 varchar(10)
DECLARE @beforeday1 varchar(10)
select @beforeday2 =convert(varchar(10) , DATEADD(DAY,-2,getdate()) ,120) -- 2天qian
select @beforeday1 =convert(varchar(10) , DATEADD(DAY,-1,getdate()) ,120) -- 2天qian


DECLARE @curr_userid int
declare @curr_score decimal(18, 2)

DECLARE curr_cursor  CURSOR FOR
select userid, sum(xx) from xxx  where convert(varchar(10) , create_at ,120) between @beforeday2 and @beforeday1 GROUP BY userid

OPEN curr_cursor
FETCH NEXT FROM curr_cursor INTO @curr_userid,@curr_score 
while ( @@FETCH_STATUS=0)
BEGIN
update ORDER set xx= @curr_score where UserID = @curr_userid - 

FETCH NEXT FROM curr_cursor INTO @curr_userid,@curr_score 

END