如何在SQL中从DateTime格式获取时间?

Jig*_*g12 168 t-sql sql-server datetime sql-server-2005

我想使用SQL Server 2005和2008默认输出使用SQL查询从DateTime列获取时间:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Run Code Online (Sandbox Code Playgroud)

t-c*_*.dk 323

SQL Server 2008:

select cast(AttDate as time) [time]
from yourtable
Run Code Online (Sandbox Code Playgroud)

早期版本:

select convert(char(5), AttDate, 108) [time]
from yourtable
Run Code Online (Sandbox Code Playgroud)


V4V*_*tta 33

假设是Sql server

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

  • 我喜欢这样以很好的格式返回时间 (3认同)

gbn*_*gbn 20

SQL Server 2008+具有"时间"数据类型

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...
Run Code Online (Sandbox Code Playgroud)

对于旧版本,没有 varchar转换

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
Run Code Online (Sandbox Code Playgroud)

  • @rahularyansharma:如果需要,我不会对日期使用 varchar 转换 (2认同)
  • 对于未关注的任何人,“0”表示最小日期“1900-01-01”。因此,这将获得列值和 0 之间的(负)天数,然后将这些负天数添加到列值中,该列值将日期部分“归零”为“1900-01-01”,您只剩下时间。 (2认同)

小智 10

从没有毫秒堆栈的日期时间获取时间的最简单方法是:

SELECT convert(time(0),getDate())
Run Code Online (Sandbox Code Playgroud)


小智 8

试试这个


小智 5

试试这个,它会起作用:

CONVERT(VARCHAR(8),DATETIME,114)
Run Code Online (Sandbox Code Playgroud)

供您参考