SQL Server数据库查询常用语句汇总

这里,汇总了在使用SQL Server数据库的过程中经常会写的查询语句。

情形1

根据时间查询最新一条数据
(dtime类型为datetime)

select top 1 '名称' as name,'列名1' as parname1,'列名2' as parname2,dtime,col1,col2 
from demo 
order by dtime desc;

情形2

根据时间查询指定属性最新时间的多条数(这里以2条为例)
DATE_TIME类型为datetime

SELECT ID_D,TAG_NAME,DATE_TIME,VAL1
FROM demo ee 
where 
TAG_NAME in ('属性1','属性2') and ID_D = 'xxx' and date_time = 
(select max(date_time) from demo rr where rr.ID_D=ee.ID_D)

或者下面这种写法也可以

SELECT top 2 ID_D,TAG_NAME,DATE_TIME,VAL1
FROM demo ee 
where 
TAG_NAME in ('属性1','属性2') and ID_D = 'xxx' 
order by date_time desc

情形3

指定sid,指定tid的条件下查找最新的多条数据
udtime类型为datetime

SELECT id,sid,tid,udtime,val
FROM demo ee
where sid in ('1001','1002','1004','1006','1007','1009','1089','1090') 
and udtime = (select max(udtime) from demo rr where rr.sid = ee.sid) and tid in (2,3)
order by sid,tid asc

情形4

查询24小时内的所有指定数据
DATE_TIME类型为datetime

SELECT DATE_TIME,val
FROM demo 
where TAG_NAME='属性名1' and DATEDIFF(hh, DATE_TIME, GETDATE())<=24
order by DATE_TIME desc

情形5

查询不重复的某属性个数

select count(DISTINCT(Name)) FROM demo 

函数说明:

GETDATE()函数

GETDATE()函数是SQL Server中的一个内置函数,它返回当前的日期和时间,包括年、月、日、小时、分钟、秒以及毫秒。这个函数在不需要特定格式或特定时区的时间时非常有用。
当你执行GETDATE()时,它将返回类似以下的值:2023-10-23 14:30:45.123,这个值表示当前的日期、时间,以及毫秒数。你可以通过执行SELECT GETDATE() AS CurrentDateTime;来获取当前的日期和时间,这将返回一行数据,其中包含一个名为CurrentDateTime的列,其值为当前的日期和时间。
如果你需要格式化这个日期或时间,你可以使用CONVERT或FORMAT函数结合GETDATE()。但请注意,FORMAT函数在某些SQL Server版本中可能不可用或性能不佳,所以通常建议使用CONVERT函数。例如,要将日期格式化为yyyy-MM-dd形式,你可以使用CONVERT函数和适当的样式代码来实现。

DATEDIFF() 函数

返回两个日期之间的时间。
语法:DATEDIFF(datepart,startdate,enddate)
startdate 和 enddate 参数是合法的日期表达式。
datepart 参数可以是下列的值:
在这里插入图片描述

CONVERT() 函数

作用:把日期转换为新数据类型的通用函数。
可以用不同的格式显示日期/时间数据。
语法:CONVERT(data_type(length),expression,style)

data_type(length) :规定目标数据类型(带有可选的长度)。
expression :规定需要转换的值。
style :规定日期/时间的输出格式。
在这里插入图片描述
上图来源于网络,也可对应下面中的例子快速查找

CONVERT(varchar(100), GETDATE(), 0):	11 21 2022  2:02PM
CONVERT(varchar(100), GETDATE(), 1):	11/21/22
CONVERT(varchar(100), GETDATE(), 2):	22.11.21
CONVERT(varchar(100), GETDATE(), 3):	21/11/22
CONVERT(varchar(100), GETDATE(), 4):	21.11.22
CONVERT(varchar(100), GETDATE(), 5):	21-11-22
CONVERT(varchar(100), GETDATE(), 6):	21 11 22
CONVERT(varchar(100), GETDATE(), 7):	11 21, 22
CONVERT(varchar(100), GETDATE(), 8):	14:02:02
CONVERT(varchar(100), GETDATE(), 9):	11 21 2022  2:02:02:727PM
CONVERT(varchar(100), GETDATE(), 10):	11-21-22
CONVERT(varchar(100), GETDATE(), 11):	22/11/21
CONVERT(varchar(100), GETDATE(), 12):	221121
CONVERT(varchar(100), GETDATE(), 13):	21 11 2022 14:02:02:727
CONVERT(varchar(100), GETDATE(), 14):	14:02:02:727
CONVERT(varchar(100), GETDATE(), 20):	2022-11-21 14:02:51
CONVERT(varchar(100), GETDATE(), 21):	2022-11-21 14:02:51.693
CONVERT(varchar(100), GETDATE(), 22):	11/21/22  2:02:51 PM
CONVERT(varchar(100), GETDATE(), 23):	2022-11-21
CONVERT(varchar(100), GETDATE(), 24):	14:02:51
CONVERT(varchar(100), GETDATE(), 25):	2022-11-21 14:02:51.693
CONVERT(varchar(100), GETDATE(), 100):	11 21 2022  2:03PM
CONVERT(varchar(100), GETDATE(), 101):	11/21/2022
CONVERT(varchar(100), GETDATE(), 102):	2022.11.21
CONVERT(varchar(100), GETDATE(), 103):	21/11/2022
CONVERT(varchar(100), GETDATE(), 104):	21.11.2022
CONVERT(varchar(100), GETDATE(), 105):	21-11-2022
CONVERT(varchar(100), GETDATE(), 106):	21 11 2022
CONVERT(varchar(100), GETDATE(), 107):	11 21, 2022
CONVERT(varchar(100), GETDATE(), 108):	14:03:41
CONVERT(varchar(100), GETDATE(), 109):	11 21 2022  2:03:41:837PM
CONVERT(varchar(100), GETDATE(), 110):	11-21-2022
CONVERT(varchar(100), GETDATE(), 111):	2022/11/21
CONVERT(varchar(100), GETDATE(), 112):	20221121
CONVERT(varchar(100), GETDATE(), 113):	21 11 2022 14:03:41:837
CONVERT(varchar(100), GETDATE(), 114):	14:03:41:837
CONVERT(varchar(100), GETDATE(), 120)2022-11-21 14:06:24
CONVERT(varchar(100), GETDATE(), 121)2022-11-21 14:06:24.583
CONVERT(varchar(100), GETDATE(), 126)2022-11-21T14:06:24.583
CONVERT(varchar(100), GETDATE(), 131)27/04/1444  2:06:24:583PM

请添加图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值