选择昨天:
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