如何在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
答案 0 :(得分:23)
CONVERT(VARCHAR(5),Date, 108)
- 仅获取HH:mm
答案 1 :(得分:8)
通常,时间戳集不是well-ordered,这意味着您无法获得“最后”时间戳,其时间部分最长为分钟2009-05-06 14:58
。
在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
此解决方案将有效地使用Date
答案 2 :(得分:6)
SELECT Convert(varchar(5), GetDate(), 108)
使用varchar(5)会自动截断日期以删除秒数。
答案 3 :(得分:2)
我不认为有内置功能;通常做这样的事情
SET @time = '07:45'
SET @date = CONVERT(DATETIME,@time)
SELECT @date
SELECT LEFT(CONVERT(VARCHAR,@date,108),5)
答案 4 :(得分:1)
对于这种特定需求,您应该使用Quassnoi's answer所述的between方法。但是,一般问题可以用以下方法解决:
select dateadd(second, -datepart(second, @date), @date)
答案 5 :(得分:1)
一种方法是使用RIGHT()函数裁剪Date。类似的东西:
RIGHT(CONVERT(VARCHAR(8),Date, 108),5)
这仅在字符数不变时才有效,例如如果适用,有一个前导零。 (抱歉,这里没有SQL服务器来测试)。
更好的方法是使用T-SQL datepart函数拆分然后重新连接日期部分,以便:
DARTPART("hh", CONVERT(VARCHAR(8),Date, 108))+":"+DARTPART("mi", CONVERT(VARCHAR(8),Date, 108))
<强>参考文献:强>
http://msdn.microsoft.com/en-us/library/ms174420.aspx
http://msdn.microsoft.com/en-us/library/ms187928.aspx
http://msdn.microsoft.com/en-us/library/ms177532.aspx
答案 6 :(得分:0)
从今天开始获取hh:mm格式:
select getdate()
select convert(varchar(5),getdate(),108)
从表格数据中的任何日期时间列获取hh:mm格式:
select date_time_column_name from table_name where column_name = 'any column data name'
select convert(varchar(5),date_time_column_name,108) from table_name
where column_name = 'any column data name'
select creationdate from employee where Name = 'Satya'
select convert(varchar(5),creationdate,108) from employee
where Name = 'Satya'
答案 7 :(得分:0)
SELECT CAST(CAST(GETDATE() AS Time(0)) AS VARCHAR(5))