连接SQL Server 2008中的两个日期和时间

时间:2015-09-04 07:15:40

标签: sql sql-server sql-server-2008 datetime stored-procedures

我想在SQL Server 2008中将两个日期和下面的日期连接在一起。如下所示:

2015-09-09 08:30 - 2015-09-09 09:30

我尝试了这种方法,但没有用,我也使用了铸造。

CONVERT(DATETIME, CONVERT(CHAR(8), S.StartTime, 112)+ '-' + CONVERT(CHAR(8), S.endtime, 108)) AS 'OccupiedTime'

显示结果如此

2015-09-09 09:30:00:000

3 个答案:

答案 0 :(得分:3)

CONVERT(CHAR(16), s.StartTime, 120) + '-' +
CONVERT(CHAR(16), s.EndTime,   120) AS OccupiedTime

答案 1 :(得分:1)

您需要2个部分的日期 - 仅限日期+时间。你可以有2个字符串并连接它们:

SELECT 
  REPLACE(CONVERT(VARCHAR(50),s.StartTime,103),'/','-') + ' ' + 
  CONVERT(VARCHAR(5),s.StartTime,114) + ' - ' +  
  REPLACE(CONVERT(VARCHAR(50),s.EndTime,103),'/','-') + ' ' + 
  CONVERT(VARCHAR(5),s.EndTime,114) AS OccupiedDateTime

您可以快速查看其外观:

SELECT 
  REPLACE(CONVERT(VARCHAR(50),GETDATE(),103),'/','-') + ' ' + 
  CONVERT(VARCHAR(5),GETDATE(),114) + ' - ' +  
  REPLACE(CONVERT(VARCHAR(50),GETDATE(),103),'/','-') + ' ' + 
  CONVERT(VARCHAR(5),GETDATE(),114) AS OccupiedDateTime

答案 2 :(得分:1)

您可以将SQL转换函数和转换样式参数一起使用,如下所示

declare @StartTime datetime = getdate()
declare @EndTime datetime = getdate()
select convert(varchar(16), @StartTime, 120) + ' - ' + convert(varchar(16), @EndTime, 120)

如果检查代码,我使用了varchar(16),它在转换后删除了不需要的毫秒信息。 有关SQL Server Convert datetime function行动的更多信息,请参阅指定的教程