首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将DateTime转换为时间

如何将DateTime转换为时间
EN

Stack Overflow用户
提问于 2015-05-04 22:37:43
回答 3查看 92K关注 0票数 20

我使用CAST语法将DateTime字段转换为Time。

代码语言:javascript
运行
复制
select CAST([time] as time) as [CSTTime]

DateTime 2015-03-19 00:00:00.000

当前输出: Time 03:05:36.0000000

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

如何过滤或转换为精确的HH:MM:SS格式。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-04 22:43:57

在SQL Server中,Time不以其显示格式存储。

因此,从用户的角度来看,您可以说它没有格式。

当然,这并不完全准确,因为它确实有一种存储格式,但作为一个普通用户,你不能真正使用它。

这适用于所有日期和时间数据类型:

DateDateTimeOffsetDateTime2SmallDateTimeDateTimeTime

如果您需要一种格式,那么您不需要强制转换为time,而是转换为char。使用Convert获取所需的char

代码语言:javascript
运行
复制
SELECT CONVERT(char(10), [time], 108) as CSTTime 

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

在2000年出版的this article中,作者深入解释了SQL Server如何处理日期和时间。我怀疑在2000到2015年间,SQL Server在内部存储datetimedatetime值的方式是否有任何重大变化。

如果你不想全部阅读,这里有相关的引文:

那么SQL Server如何在内部存储日期呢?它使用8个字节来存储日期时间值-前4个字节表示日期,后4个字节表示时间。SQL Server可以将这两组4个字节解释为整数。

.

.

SQL Server将该时间的第二个整数存储为午夜后的时钟滴答数。一秒包含300个刻度,因此一个刻度等于3.3毫秒(ms)。

由于time实际上存储为一个4字节的整数,因此它实际上没有格式作为数据类型的组成部分。

您可能还想查看this article,以获得更详细的代码示例解释。

票数 29
EN

Stack Overflow用户

发布于 2016-02-02 21:08:04

您只需在下面的代码中简单地使用TIME(0)数据类型就可以用CAST实现它:

代码语言:javascript
运行
复制
SELECT CAST('2015-03-19 01:05:06.289' AS TIME(0))

输出:

01:05:06

票数 12
EN

Stack Overflow用户

发布于 2016-09-10 17:55:38

SQL Server2008:

代码语言:javascript
运行
复制
select cast(MyDate as time) [time] from yourtable

早期版本:

代码语言:javascript
运行
复制
select convert(char(5), MyDate , 108) [time] from yourtable

其他选项:

代码语言:javascript
运行
复制
SELECT CONVERT(VARCHAR(20), GETDATE(), 114)

从datetime 中获取时间而不需要堆栈的最简单方法是:

代码语言:javascript
运行
复制
SELECT CONVERT(time(0),GETDATE())

小时和分钟

代码语言:javascript
运行
复制
SELECT substring(CONVERT(VARCHAR, GETDATE(), 108),0,6) AS Time
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30032915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档