如何在SQL中从DateTime格式获取时间?

时间:2011-10-10 08:52:22

标签: sql-server tsql sql-server-2005 datetime

我想使用SQL查询从DateTime列中获取Time 使用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

18 个答案:

答案 0 :(得分:301)

SQL Server 2008:

select cast(AttDate as time) [time]
from yourtable

早期版本:

select convert(char(5), AttDate, 108) [time]
from yourtable

答案 1 :(得分:30)

假设Sql server

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

答案 2 :(得分:19)

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

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

对于旧版本,没有 varchar转换

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

答案 3 :(得分:10)

从没有毫秒级堆栈的日期时间获取时间的最简单方法是:

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

答案 4 :(得分:8)

尝试使用此

  • 日期到时间

    i
  • TinyTime的时间

    RANDOMIZED-SELECT(A, q + 1, r, i - k)

答案 5 :(得分:3)

试试这个:

select  convert(nvarchar,CAST(getdate()as time),100)

答案 6 :(得分:3)

试试这个,它会起作用:

CONVERT(VARCHAR(8),DATETIME,114)

适用于您的reference

答案 7 :(得分:2)

我经常使用这个脚本从DateTime获取时间:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

答案 8 :(得分:2)

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName

答案 9 :(得分:1)

要从datetime获取时间,我们可以使用

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)

答案 10 :(得分:1)

如果您想要这种风格的日期:2013年10月23日上午10:30

使用此

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert()方法需要3个参数

  1. 数据类型
  2. 列/值
  3. 样式:可用样式从100到114.您可以在范围内选择。逐个选择以更改日期格式。

答案 11 :(得分:1)

select cast (as time(0))

将是一个很好的条款。例如:

(select cast(start_date as time(0))) AS 'START TIME'

答案 12 :(得分:0)

获取服务器日期

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

如果存储在表中

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

结果:

  

11:41 AM

答案 13 :(得分:0)

select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

答案 14 :(得分:0)

在MSSQL2012或更高版本上

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

...或...

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

答案 15 :(得分:0)

SQL Server 2012:

./StJamesRow.2010.Unknown.csv -> ./StJamesRow.2010.csv
./MarbleArch.2015.Unknown.pdf -> ./MarbleArch.2015.pdf

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

答案 16 :(得分:0)

你可以使用这个:

SELECT CONVERT(VARCHAR(5), GETDATE(),8)  

输出:

08:24

答案 17 :(得分:-2)

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

输出:来自

05:11:26
05:11:24
05:11:24