如何在SQL Server中将hh:mm:ss转换为hh:mm?

Pen*_*uen 13 sql sql-server sql-server-2005

如何在SQL Server中将hh:mm:ss转换为hh:mm?

select Count(Page) as VisitingCount,Page,CONVERT(VARCHAR(8),Date, 108) from scr_SecuristLog   
where Date between '2009-05-04 00:00:00' and '2009-05-06 14:58'  
and [user] in(select USERNAME             
    from scr_CustomerAuthorities )  
group by Page,Date order by [VisitingCount] asc
Run Code Online (Sandbox Code Playgroud)

小智 23

CONVERT(VARCHAR(5),Date, 108)- 只获取 HH:mm


Qua*_*noi 8

通常,时间戳集不是很有序,这意味着你无法获得一个"最后"时间戳,其时间部分最多可达分钟2009-05-06 14:58.

In SQL Server,它将日期时间的一部分保留为1/300午夜之后的第二个分数,这个"最后"时间戳将是2009-05-06 14:58:59.997,但不能保证与其他TIMESTAMP存储方法的未来版本兼容.

这意味着你需要将你的BETWEEN条件分成两个条件,其中一个条件strict less不是下一个条件:

select Count(Page) as VisitingCount,Page,CONVERT(VARCHAR(8),Date, 108) from scr_SecuristLog   
where Date >= '2009-05-04 00:00:00'
      AND Date < DATEADD(minute, 1, '2009-05-06 14:58')
and [user] in(select USERNAME             
    from scr_CustomerAuthorities )  
group by Page,Date order by [VisitingCount] asc
Run Code Online (Sandbox Code Playgroud)

此解决方案将有效地使用索引 Date


Kei*_*ith 6

SELECT Convert(varchar(5), GetDate(), 108)
Run Code Online (Sandbox Code Playgroud)

使用varchar(5)将自动截断日期以删除秒.