sqlserver2008时间转换问题,(拿上一个小时的数据)求解。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2008时间转换问题,(拿上一个小时的数据)求解。相关的知识,希望对你有一定的参考价值。
select * from table
WHERE 采集时间点 between CONVERT(varchar, GETDATE(), 23) + ' ' + convert(varchar, DATENAME(hour,getdate())-1) +':00:00'
and CONVERT(varchar(100), GETDATE(), 23) + ' ' + CONVERT(VARCHAR,DATENAME(hour,getdate()) -1) +':59:59' 查不到数据(实际中是有数据)
select * from table
WHERE 采集时间点 between CONVERT(varchar, GETDATE(), 23) + ' ' + convert(varchar, DATENAME(hour,getdate())) +':00:00'
and CONVERT(varchar(100), GETDATE(), 23) + ' ' + CONVERT(VARCHAR,DATENAME(hour,getdate()) ) +':59:59' 不写减一就对了,实现的是取上一个小时的数据。 懂行的帮忙看看。
下面那个写的意思取得是当前小时内的数据,上面减一的取得是上个小时的数据,首先你要确定表里有没有满足减一时间条件的数据
追问我昨天还是可以的,今天就不行了,什么都没动。 我这边也能像你那样找出来范围的,但是在证据运行中实现 “减1”时就查不出数据,数据是有的。 但是不减一能查出来数据。 很奇怪的。 昨天是好的,我很确定,是不是数据库有问题?
追答昨天日期跟今天不一样啊 昨天是8号 今天是9号啊 你的getdate()取得不是昨天的啊,你先可以把日期写死(写成昨天的)测下
参考技术A日期的增减别用-1,要用日期函数
DATEADD(hh, -1, 日期) --将当前日期小时-1sqlserver date与datetime区别及sqlserver日期格式转换
date是SQL Server 2008新引进的数据类型。它表示一个日子,不包含时间部分,可以表示的日期范围从公元元年1月1日到9999年12月31日。只需要3个字节的存储空间。
DateTime 日期和时间部分,可以表示的日期范围从公元1753年1月1日00:00:00.000 到9999年12月31日23:59:59.997 ,精确到3.33毫秒,它需要8个字节的存储空间。
Sqlserver日期转换
Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131): 18/04/1427 10:57:49:920AM
-- 月份加2
select DATEADD(MONTH,2,(select GETDATE()));
获取2013-01-01到当前时间的每一天,需要增加一张days表,字段days为1-10000
declare @begin datetime,@end datetime
set @begin=‘2013-01-01‘
set @end=CONVERT(date,GETDATE(),23)
declare @months int
set @months=DATEDIFF(DAY,@begin,@end) -- 获取开始日期与结束日期的天数
select convert(varchar(10),DATEADD(DAY,days,@begin) ,112) AS 月份 -- 增加一天
from days
where days<=@months;
以上是关于sqlserver2008时间转换问题,(拿上一个小时的数据)求解。的主要内容,如果未能解决你的问题,请参考以下文章
转换 SQL Server 2008 R2 和 2012 之间的差异
在 SQL Server 2008 中将 NVARCHAR 转换为 INT 数据类型
SQL Server 2008 函数将 GMT 时间转换为 AEST 并采用夏令时