我想从DateTime列使用SQL查询只得到时间 使用SQL Server 2005和2008 默认的输出:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

我想要这样的输出:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10

当前回答

试试这个,它会起作用的:

CONVERT(VARCHAR(8),DATETIME,114)

供您参考。

其他回答

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

就我个人而言,我更喜欢TRY_CONVERT()而不是CONVERT()。主要区别:如果强制转换失败,TRY_CONVERT()将返回NULL,而CONVERT()将引发错误。

MSSQL2012或以上版本

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

…或…

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )

SQL Server 2008+有一个“时间”数据类型

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

对于旧版本,没有varchar转换

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...

获取服务器日期

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

or

如果存储在表中

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

结果:

11:41AM

从datetime获取时间而不使用毫秒堆栈的最简单方法是:

SELECT convert(time(0),getDate())