如何将DateTime转换为时间

goo*_*yui 18 sql sql-server sql-server-2008

DateTime使用CAST语法将字段输入到时间.

select CAST([time] as time) as [CSTTime]
Run Code Online (Sandbox Code Playgroud)

约会时间 2015-03-19 00:00:00.000

现在输出:时间 03:05:36.0000000

我只需要HH:MM:SS而不是毫秒或0000

如何过滤或将其转换为精确HH:MM:SS格式.

Zoh*_*led 26

Time未在SQL Server中以其显示格式存储.
因此,从用户的角度来看,可以说它没有格式.
当然,这并不完全准确,因为它确实具有存储格式,但作为普通用户,您无法真正使用它.
这是所有的日期和时间数据类型真:
Date,DateTimeOffset,DateTime2,SmallDateTime,DateTimeTime.

如果你需要一种格式,那么你不需要转换time为a char.用于Convert满足char您的需求:

SELECT CONVERT(char(10), [time], 108) as CSTTime 
Run Code Online (Sandbox Code Playgroud)

如果您有兴趣,这里有一些背景数据:

在2000年发表的这篇文章中,作者深入解释了SQL Server如何处理日期和时间.我怀疑在SQL Server存储方式和内部值方面date,2000年和2015年之间是否有任何重大变化.timedatetime

以下是相关引用,如果您不想阅读所有内容:

那么SQL Server如何在内部存储日期?它使用8个字节来存储日期时间值 - 日期的前4个和时间的第4个.SQL Server可以将两个4字节集合解释为整数.
........
........
SQL Server将时间的第二个整数存储为午夜后的时钟滴答数.第二个包含300个刻度,因此刻度等于3.3毫秒(ms).

因为time实际上存储为4字节整数,所以它实际上没有格式作为数据类型的组成部分.

您可能还想查看本文以获取有关代码示例的更详细说明.


Sta*_*vas 10

CAST只需使用TIME(0)以下简单的use 数据类型即可实现:

SELECT CAST('2015-03-19 01:05:06.289' AS TIME(0))
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

01:05:06