2013-05-29 5 views
1
DECLARE @temp TABLE 
(
     iLeadID INT , 
     Title VARCHAR(MAX) , 
     AlertDate DATETIME 
) 

DECLARE @iLeadID INT 
DECLARE @getiLeadID CURSOR 

SET 
@getiLeadID = CURSOR FOR 
    SELECT iLeadID FROM LeadsContracts 

OPEN @getiLeadID 

FETCH NEXT FROM @getiLeadID INTO @iLeadID 

WHILE @@FETCH_STATUS = 0 
BEGIN 
     INSERT INTO @temp 
       SELECT @iLeadID , 
         'Disclosure' , 
         CONVERT(VARCHAR, dtDisclosure, 101) 'Date' 
       FROM LeadsContracts 
       WHERE iLeadID = @iLeadID 
         AND dtDisclosure IS NOT NULL 
     INSERT INTO @temp 
       SELECT @iLeadID , 
         'Due Diligence' , 
         CONVERT(VARCHAR, dtDueDiligence, 101) 'Date' 
       FROM LeadsContracts 
       WHERE iLeadID = @iLeadID 
         AND dtDueDiligence IS NOT NULL 
     INSERT INTO @temp 
       SELECT @iLeadID , 
         'Finance Appraisals' , 
         CONVERT(VARCHAR, dtFinanceAppraisals, 101) 'Date' 
       FROM LeadsContracts 
       WHERE iLeadID = @iLeadID 
         AND dtFinanceAppraisals IS NOT NULL 
     INSERT INTO @temp 
       SELECT @iLeadID , 
         sFreeTextCustom1 , 
         CONVERT(VARCHAR, dtFreeTextDate1, 101) 'Date' 
       FROM LeadsContracts 
       WHERE iLeadID = @iLeadID 
         AND dtFreeTextDate1 IS NOT NULL 
     INSERT INTO @temp 
       SELECT @iLeadID , 
         sFreeTextCustom2 , 
         CONVERT(VARCHAR, dtFreeTextDate2, 101) 'Date' 
       FROM LeadsContracts 
       WHERE iLeadID = @iLeadID 
         AND dtFreeTextDate2 IS NOT NULL 

     FETCH NEXT FROM @getiLeadID INTO @iLeadID 
    END 
    CLOSE @getiLeadID 
    DEALLOCATE @getiLeadID 

    SELECT * , 
      (CASE WHEN 1 = 1 
        THEN (SELECT TOP 1 
            sEmail 
          FROM  UserAccount objUA 
          WHERE  EXISTS (SELECT iUserID 
              FROM GroupAgent 
              WHERE iUserID = objUA.iUserID 
                AND iGroupID = t1.GroupID 
                AND btAdminFlg = ((1))) 
         ) 
        ELSE '' 
       END) AS AdminEmail 
    FROM  (SELECT * , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              sFirstName + ' ' + sLastName 
            FROM Lead 
            WHERE iLeadID = objTemp.iLeadID 
           ) 
          ELSE '' 
         END AS LeadName , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              sEmail 
            FROM Lead 
            WHERE iLeadID = objTemp.iLeadID 
           ) 
          ELSE '' 
         END AS LeadEmail , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              iUserID 
            FROM AssignLeadUser 
            WHERE iLeadID = objTemp.iLeadID 
           ) 
          ELSE '' 
         END AS AgentID , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              sFirstName + ' ' + sLastName 
            FROM UserAccount 
            WHERE iUserID = (SELECT 
                   iUserID 
                 FROM AssignLeadUser 
                 WHERE iLeadID = objTemp.iLeadID 
                ) 
           ) 
          ELSE '' 
         END AS AgentName , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              sEmail 
            FROM UserAccount 
            WHERE iUserID = (SELECT 
                   iUserID 
                 FROM AssignLeadUser 
                 WHERE iLeadID = objTemp.iLeadID 
                ) 
           ) 
          ELSE '' 
         END AS AgentEmail , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              iGroupID 
            FROM AssignLeadUser 
            WHERE iLeadID = objTemp.iLeadID 
           ) 
          ELSE '' 
         END AS GroupID , 
         CASE WHEN 1 = 1 
          THEN (SELECT TOP 1 
              sName 
            FROM [Group] 
            WHERE iGroupID = (SELECT 
                   iGroupID 
                 FROM AssignLeadUser 
                 WHERE 
                   iLeadID = objTemp.iLeadID 
                 ) 
           ) 
          ELSE '' 
         END AS GroupName 
       FROM  @temp objTemp 
      ) AS t1 
    ORDER BY AlertDate ASC 

это дает мне выход 2013-04-04 00:00:00.000 в AlertDate колонкеКак читать только дату с SQL Server 2008?

Я хочу, чтобы получить только дату (без времени), как это:. 2013-04-04AlterDate колонке

Может кто-нибудь, пожалуйста, помогите мне посоветовать некоторые запрос или обновить свой код?

заранее спасибо

+0

вы можете использовать тип DATE, чтобы бросить свои данные. – rahularyansharma

+0

fyi: Всегда полезно попытаться сравнить образец кода с наименьшим примером проблемы, прежде чем обращаться за помощью. – HABO

ответ

4

Вы можете использовать date тип вместо datetime

declare @temp Table 
(
iLeadID int, 
Title varchar(Max), 
AlertDate date 
) 
+0

Спасибо, Ричард, это сработало для меня ... –

1

Вы есть AlterDate типизированных как D ATETIME. Если вы хотите сохранить дату, используйте тип данных DATE. Дополнительным преимуществом этого является то, что тип данных DATE принимает только 3 байта вместо 8 байтов DATETIME.

Если впоследствии вам нужно включить AlterDate в DATETIME, он будет использовать значение полуночи, которое вы сейчас видите.

Смежные вопросы