sqlserver 使用总结

 

1.日期或时间 加/减 天数/分钟/秒
①DATEADD(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND, #int数字, #date/datetime类型) 日期或时间 减 年/月/日/小时/分钟/秒
②DATEDIFF(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND, #date/datetime类型, #date/datetime类型) 两个日期或时间类型相减,取年/月/日/小时/分钟/秒

select DATEADD(day, -10, '2023-12-30 12:32:15') --2023-12-20 12:32:15.000
select DATEADD(day, 15, '2023-01-01') --2023-01-16 00:00:00.000
select DATEADD(hour, -10, '2023-12-30 12:32:15') --2023-12-30 02:32:15.000
select DATEADD(minute, -10, '2023-12-30 12:32:15') --2023-12-30 12:22:15.000
select DATEADD(second, -10, '2023-12-30 12:32:15') --2023-12-30 12:32:05.000


select DATEDIFF(DAY,'2023-04-03','2023-10-09')    --6
select DATEDIFF(MONTH ,'2023-02-03','2023-10-09')    --8
select DATEDIFF(YEAR ,'2020-02-03','2023-10-09')    --3
select DATEDIFF(HOUR ,'2023-10-09 10:15:07','2023-10-09 12:32:15')
select DATEDIFF(MINUTE ,'2023-10-09 12:15:07','2023-10-09 12:32:15')    --17
select DATEDIFF(SECOND ,'2023-10-09 12:32:07','2023-10-09 12:32:15')    --8

 

2.类型转换

int转字符串 CAST(h.DateKey AS VARCHAR(10))
字符串转日期 CAST(#datestr AS DATE)
时间转日期 CONVERT(date,#datatime时间类型)
date或datetime类型字段可以通过直接取年/月/日/小时/分钟/秒,如:YEAR/MONTH/DAY/HOUR/MINUTE/SECOND(#date/datetime类型)
DATENAME(weekday, #datetime类型) --展示日期对应的星期,返回值如:星期日

DATEPART(YEAR/MONTH/DAY/HOUR/MINUTE/SECOND, #datetime) 取时间类型的年/月/日/小时/分钟/秒

 

select CAST(123456 AS VARCHAR(10));    --123456 类型:varchar(10)
select CAST('20240623' AS DATE);   --2024-06-23
select CONVERT(date,'2023-12-30 12:32:15');    --2023-12-30
select CONVERT(date,datetime类型);    --2023-12-30

 

--如下datatime为datetime类型
select
CONVERT(date, datatime),
DATEPART(year, datatime) year1,
DATEPART(month, datatime) month1,
DATEPART(day, datatime) day1,
DATEPART(hour, datatime) hour1,
DATEPART(minute, datatime) minute1,
DATEPART(second, datatime) second1
from Summary_ele_Ten;


如一个int类型的字段,如20,220,131,要转换成字符串,要取年份,要转换成date类型
select
20220131,
CAST(20220131 AS VARCHAR(10)),    --int转字符串
SUBSTRING(CAST(20220131 AS VARCHAR(10)), 0, 5) year1,    --字符串取年
CAST(CAST(20220131 AS VARCHAR(10)) AS DATE) datekey1;    --字符串转日期

 

3.字符串截取
SUBSTRING(#str,start,length)


4.sqlserver没有limit,可使用排序后取top(1)代替,

SQL Server中的TOP关键字用于限制查询结果的行数。‌可以与ORDER BY子句结合使用,‌以便根据特定的排序规则返回前N个记录。‌
如下:

 

5.concat(#str1,#str2,...)    字符串拼接
如:concat(DATEDIFF(MINUTE, e.BeginTime,e.EndTime),'min')

 

6.声明变量和变量引用
如:
declare @page_begintime DateTime
declare @page_endtime DateTime
set @page_begintime = '2024-05-04 00:00:00.000'    -- 页面选择的开始时间
set @page_endtime = '2024-06-17 23:59:59.998'    -- 页面选择的截止时间

-- 引用:
@page_begintime

 

7.时间格式化
FORMAT(#datetime, 'yyyy-MM-dd HH:mm:ss')

 

8.ISNULL(#字段, 0)     如果字段值为null,就设置成0,用于求和时的处理,因null+数值为null,如 sum(ISNULL(#字段, 0))

posted @ 2024-08-02 17:10  紫蕈  阅读(30)  评论(0编辑  收藏  举报