在SQL Server 2008中只选择时间列中的hh:mm部分

在SQL Server 2008中只选择时间列中的hh:mm部分

问题描述:

我在SQL Server 2008表中有time列。我只想选择hh:mm并删除(秒)ss部分。在SQL Server 2008中只选择时间列中的hh:mm部分

最重要的是,我想返回时间作为数据类型,并且不想转换为varchar

有什么办法吗?

+0

您正在使用哪个数据库?你到目前为止尝试了什么? hh:mm:ss存储在字符串中吗? – saitejalakkimsetty

+0

[如何从DateTime获取小时和分钟]可能的重复(https://stackoverflow.com/questions/27979307/how-to-get-hour-and-minute-only-from-a-datetime) –

+0

数据库:SQL 2008,我试图转换为varchar,但前端使用时间跨度,所以它会引发错误。我需要时间数据类型,但只有HH:MM – dinesh

你可以使用日期部分内置函数(我已经cheked并在SQL 2008提供)

SELECT cast(DATEPART(hour, MyDateColumn) as varchar) + ':' + cast(DATEPART(minute, MyDateColumn) as varchar) from MyTeable 

我希望它能帮助,

胡安

编辑: 如果你需要的是时间值,那么你可以将它转换为:

SELECT CONVERT(TIME, 
     cast(DATEPART(hour, MyDateColumn) as varchar) 
     + ':' 
     + cast(DATEPART(minute, MyDateColumn) as varchar) 
     ) 
from MyTable 
+0

thx jaun,但我不想转换为varchar,因为前端使用的是时间跨度,这会引发错误,并且我不想更改前端 – dinesh

+0

这就是另一个问题,给appart,你不应该直接从前端层访问数据访问层...你的代码不可能再次投入到时间跨度? (我要去寻找另一个演员来回复一个时间段,我会在3分钟内编辑我的答案) – Juan

+0

我试过了上面的答案,但是当我们转换为时间时,它会返回如下的值:09:00:00.0000000,这不是我们需要的 – dinesh

可以使用,

CONVERT(DATETIME, CONVERT(VARCHAR(5),table.time,108), ,table.time) AS [Time]

转换为varchar和108是GET HH使用:mm:ss的,但使用VARCHAR(5)获得HH:MM,然后在时间转换

SELECT convert(time,CONVERT(VARCHAR(5),getdate(),108)) 
+0

Ronak,当我们再次尝试转换回时间时,它将转换为hh:mm:ss – dinesh

+0

运行上述查询返回09:00:00.0000000 – dinesh