Sql 如何将nvarchar转换为时间,而不是日期时间?

Sql 如何将nvarchar转换为时间,而不是日期时间?,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,结果:1900-01-01 12:30:00.000(我不想要这个) 但我需要的是时间格式的结果,不是字符串,不是日期时间? 结果:12:30(我想要这个)您可以使用该函数 顺便说一下,SQL Server中没有“时间”数据类型。因此,转换后的结果将始终是字符串 编辑:SQL Server版本中没有“时间”数据类型您可以使用该函数 顺便说一下,SQL Server中没有“时间”数据类型。因此,转换后的结果将始终是字符串 编辑:在SQL Server版本中没有“时间”数据类型在SQL Server



结果:1900-01-01 12:30:00.000(我不想要这个)


但我需要的是时间格式的结果,不是字符串,不是日期时间?

结果:12:30(我想要这个)

您可以使用该函数

顺便说一下,SQL Server中没有“时间”数据类型。因此,转换后的结果将始终是字符串

编辑:SQL Server版本中没有“时间”数据类型
您可以使用该函数

顺便说一下,SQL Server中没有“时间”数据类型。因此,转换后的结果将始终是字符串

编辑:在SQL Server版本中没有“时间”数据类型
在SQL Server 2008中有一个类型,但在以前的版本中,可以将其表示为varchar以供显示

这就是如何以所需格式检索DATETIME字段的时间部分

DECLARE @DateNow smalldatetime
SET @DateNow='12:30'
select @DateNow
-------------------------------------OR--------------------------------------
select CAST( '12:30' as datetime )
SQLServer2008中有一个类型,但在以前的版本中,可以将其表示为varchar以供显示

这就是如何以所需格式检索DATETIME字段的时间部分

DECLARE @DateNow smalldatetime
SET @DateNow='12:30'
select @DateNow
-------------------------------------OR--------------------------------------
select CAST( '12:30' as datetime )

如果需要比较、添加和/或减去时间(仅限)值,请考虑使用INT存储“时间”值,然后在显示结果时将其转换为CHAR。

如果需要比较、添加和/或减去时间(仅限)值,考虑使用INT存储“TIME”值,然后在显示结果时将其转换为CHAR的可能性。

如José所说,您可以使用CONVERT将datetime显示为date。MSDN有一个所有的列表。例如,格式8是hh:mi:ss:

DECLARE @DateNow smalldatetime
SET @DateNow = GETDATE() -- 2009-05-08 12:58:02.680

SELECT CONVERT(CHAR(5), @DateNow, 8) 
-- this returns the time portion as 12:58
现在,您可以通过指定更少的字符来缩短秒数:

 select convert(varchar(32),getdate(),8)
 12:51:21
另一种常用的格式是121,yyyy-mm-dd-hh:mi:ss.mmm(24小时):

您可以在其中选择时间部分,如:

 select convert(varchar(32),getdate(),121)
 2009-05-08 12:51:21.987
或者结合字符串技巧:

 select substring(convert(varchar(32),getdate(),121),12,5)
 12:51

对吧??对!

正如José所说,您可以使用CONVERT将日期时间显示为日期。MSDN有一个所有的列表。例如,格式8是hh:mi:ss:

DECLARE @DateNow smalldatetime
SET @DateNow = GETDATE() -- 2009-05-08 12:58:02.680

SELECT CONVERT(CHAR(5), @DateNow, 8) 
-- this returns the time portion as 12:58
现在,您可以通过指定更少的字符来缩短秒数:

 select convert(varchar(32),getdate(),8)
 12:51:21
另一种常用的格式是121,yyyy-mm-dd-hh:mi:ss.mmm(24小时):

您可以在其中选择时间部分,如:

 select convert(varchar(32),getdate(),121)
 2009-05-08 12:51:21.987
或者结合字符串技巧:

 select substring(convert(varchar(32),getdate(),121),12,5)
 12:51

对吧??对!

SQL Server中没有只保存日期时间部分的数据类型。你想达到什么目的?@ykaratoprak-请看我的答案,让我知道这对你是否有效。你是如何解决这个问题的?似乎这个问题还没有找到它想要的答案。每个人都在发布关于时间部分过期的帖子。没有人解决“将字符串转换为时间或日期时间”部分:)SQL Server中没有数据类型仅保存日期的时间部分。你想达到什么目的?@ykaratoprak-请看我的答案,让我知道这对你是否有效。你是如何解决这个问题的?似乎这个问题还没有找到它想要的答案。每个人都在发布关于时间部分过期的帖子。没有人回答过“将字符串转换为时间或日期时间”部分:)+1发布了另一个答案来详细解释您的字符(5)技巧:)+1发布了另一个答案来详细解释您的字符(5)技巧:)