【问题标题】:Concatenate Two dates and their times in SQL Server 2008在 SQL Server 2008 中连接两个日期及其时间
【发布时间】:2015-09-04 07:15:40
【问题描述】:

我想在 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

【问题讨论】:

  • 为什么不用格式 120?

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


【解决方案1】:
CONVERT(CHAR(16), s.StartTime, 120) + '-' +
CONVERT(CHAR(16), s.EndTime,   120) AS OccupiedTime

【讨论】:

    【解决方案2】:

    您需要 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
    

    【讨论】:

      【解决方案3】:

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

      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 操作的更多信息,请参阅给出的教程

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多