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))
标签:总结,10,12,--,32,使用,sqlserver,2023,select From: https://www.cnblogs.com/plzh/p/18339179