代码之家  ›  专栏  ›  技术社区  ›  dotnetdevcsharp

将两个日期时间戳与第一个日期和第二个时间组合在一起

  •  0
  • dotnetdevcsharp  · 技术社区  · 7 年前

    我有一个表,在两个不同的列中存储约会的开始日期和结束日期。它们都是约会时间。这是为了便于导入旧数据。我不能改变结构。我正在使用Microsoft SQL Server。

    ApptDate                   ApptTime
    2012-02-16 00:00:00.000    1899-12-30 11:45:00.000
    2012-02-16 00:00:00.000    1899-12-30 13:15:00.000
    2012-02-16 00:00:00.000    1899-12-30 13:30:00.000
    

    我需要做的是将这两个约会时间组合在一起。我正在调用存储过程。我的问题是,我最好的方式是什么?

    ALTER PROCEDURE [dbo].[GetTodaysAppointsNonRepeating] 
        -- Add the parameters for the stored procedure here
        @DateToday DATETIME, @ClientID INT
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
    
        -- Insert statements for procedure here
        SELECT a.ID, a.ApptDate, a.ApptTime, a.ApptLength, a.checkedin, a.Entered, a.UserID, a.ProviderID, a.PatientID, CASE WHEN patient.FirstName is null then a.Name END as name, 
        CASE WHEN HomePhone !='' then HomePhone WHEN WorkPhone !='' THEN WorkPhone ELSE CellPhone END as Telephone
        FROM Appointments as a INNER JOIN Patient on a.PatientID = patient.id and 
        a.clientid = patient.clientid WHERE ApptDate = @DateToday and a.ClientID = @ClientID
        AND RepeatType = 'N'
    END
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   digital.aaron    7 年前

    这是如何将两个datetime字段组合在一起的:

    SELECT DATETIMEFROMPARTS(YEAR(ApptDate)
                            ,MONTH(ApptDate)
                            ,DAY(ApptDate)
                            ,DATEPART(HOUR,ApptTime)
                            ,DATEPART(MINUTE,ApptTime)
                            ,DATEPART(SECOND,ApptTime)
                            ,DATEPART(MILLISECOND,ApptTime))