SQL Server中DateTime的TIME部分

时间:2015-02-27 08:57:35

标签: sql-server datetime

在SQL Server中,我需要以'2014-01-01 14:13:00.000''hh:mi:ss'格式从此日期时间'hh:mi:ss:mmm'中提取时间部分。

我试过这个查询但是输出错了,为什么?

你能帮助我吗?

提前致谢

SELECT
    CONVERT (VARCHAR (12), '2014-01-01 14:13:00.000', 114) 'hh:mi:ss:mmm',
    CONVERT (VARCHAR (8), '2014-01-01 14:13:00.000', 108) 'hh:mi:ss';

输出:

'hh:mi:ss:mmm'  'hh:mi:ss'
2014-01-01 1    2014-01-

5 个答案:

答案 0 :(得分:2)

试试这个:

SELECT cast(AttDate as time) [time]

答案 1 :(得分:1)

如果您从日期时间值转换,那么您的转化正确无误:

SELECT
    CONVERT (
        VARCHAR (12),
        CONVERT(datetime,'2014-01-01T14:13:00.000'),
        114
    ) 'hh:mi:ss:mmm',
    CONVERT (
        VARCHAR (8),
        CONVERT(datetime,'2014-01-01T14:13:00.000'),
        108
    ) 'hh:mi:ss';

结果:

hh:mi:ss:mmm hh:mi:ss
------------ --------
14:13:00:000 14:13:00

实际上,您当前的代码要求将 char样式数据转换为 char样式数据,因此样式参数被忽略。

答案 2 :(得分:0)

这个怎么样?

SELECT RIGHT('2014-01-01 14:13:00.000', 12)

SELECT LEFT(RIGHT('2014-01-01 14:13:00.000', 12), 8)

如果日期在表格中,您当然可以放置CONVERT(nvarchar,x)。

答案 3 :(得分:0)

试试这个

SELECT CONVERT(TIME(0),'2014-01-01 14:13:00.000')  --> Will give 'hh:mi:ss'


SELECT CONVERT(TIME(3),'2014-01-01 14:13:00.000')  --> Will give 'hh:mi:ss:mmm'

答案 4 :(得分:0)

.NET FORMAT功能也可用于SQL Server。您可以按如下方式使用它:

SELECT
    FORMAT( CONVERT(datetime,'2014-01-01T14:13:00.000'),
        'HH:mm:ss:fff' ) 'hh:mi:ss:mmm (custom)',
    FORMAT( CONVERT(datetime,'2014-01-01T14:13:00.000'),
        'HH:mm:ss' )    'hh:mi:ss (custom)',
    FORMAT( CONVERT(datetime,'2014-01-01T14:13:00.000'),
        'T', 'NL-nl' ) 'hh:mi:ss (standard)';