这里,汇总了在使用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