我对非常大的表格进行了复杂的查询。
长话短说,当我使用转换时间选择一天中的某段时间(让我们说12-13h,从日期时间行转换它)查询需要几分钟,而不是没有转换的几秒钟!
所以,我尝试了 datepart ,它运行良好,几乎是即时的,但问题是,如何同时指向小时和分钟?
任何其他快速解决方案都非常受欢迎。
感谢。
答案 0 :(得分:2)
与此同时,我提出了这个问题:
DATEPART(HOUR, datetimecolumn)*100 + DATEPART(MINUTE, datetimecolumn)) between 1210 and 1540
答案 1 :(得分:1)
如果您愿意做一些数学运算,可以使用datePart,如下所示:
15:40 = 15 * 60 + 40 = 940分钟
选择* ..... 其中datepart(mi,datefield)介于(12 * 60 + 10)和(15 * 60 + 40)之间
答案 2 :(得分:0)
如果你有一个恒定的时期 - 即 - 总是每小时,没有任何浮动期 - 你可以引入一些类似“序数周期”的计算字段,索引和查询预先计算期间值
OR
没有任何常量句点 - 尝试在SELECT语句之前计算正确的开始值和结束值,并在查询中使用它们。
请记住,在查询的where子句中使用函数 - 有时候是个坏主意。使用ORDER BY子句中的函数 - 总是错误的
答案 3 :(得分:0)
您可以通过以下功能获取GETTIME
alter function GetTimeOnly(@_DateTime DateTime)
returns datetime
as
begin
return dateadd(day, -datediff(day, 0, @_datetime), @_datetime)
end
go
或者你可以从转换功能中获得时间。
SELECT
CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond,
CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly