bib*_*hew 0 sql sql-server sql-server-2008
Hai们我想用SQL中的前一小时数据.
我找到了这样的东西
DATEPART(hh,GETDATE())-1 –>
Run Code Online (Sandbox Code Playgroud)
但它有一些问题,因为我的日期格式是24小时.当时间在00.00.00-00.59.59之间时,它将给出-ve value(-1).我应该得到23作为价值.有什么建议?这就是我做的
DECLARE @hourlyaggregatedvolume smallint
DECLARE @hourlyaggregatedspeed smallint
DECLARE @hourlyaggregatedoccupancy float
DECLARE @hourlyaggregatedheadway float
DECLARE @trafficdatadate datetime
DECLARE @closeststationname nvarchar(100) = 'E100 1001'
DECLARE @accidentdate nvarchar(10) = '2014-02-17'
DECLARE @accidenttime nvarchar(10) = '01:10:00'
SELECT
@hourlyaggregatedvolume = aggregated_volume,
@hourlyaggregatedspeed =aggregated_speed,
@hourlyaggregatedheadway = aggregated_headway,
@hourlyaggregatedoccupancy = aggregated_occupancy,
@trafficdatadate = [date]
FROM dbo.traffic_data_aggregated_hourly
WHERE station = @closeststationname
AND CONVERT(DATE,[date]) = @accidentdate
AND period = CASE WHEN SUBSTRING (@accidenttime,1,2) - 1 = -1 THEN 23
ELSE SUBSTRING (@accidenttime,1,2) - 1
END
SELECT @hourlyaggregatedvolume,@hourlyaggregatedspeed,@hourlyaggregatedheadway
,@hourlyaggregatedoccupancy,@trafficdatadate
Run Code Online (Sandbox Code Playgroud)
先做数学数学,然后提取小时:
DATEPART(hour,DATEADD(hour,-1,GETDATE()))
Run Code Online (Sandbox Code Playgroud)
(另外,我最讨厌的"短"形式的日期组件.我总是宁愿拼出来完全如hour对hh,因为我觉得它更具可读性,它通常不超过几个字符更加多了,我永远记得哪些是几个月与分钟)
| 归档时间: |
|
| 查看次数: |
832 次 |
| 最近记录: |