2014-10-25 3 views
0

Я делаю домашнее задание и часть вопроса задается следующим образом: «список передачам открыт в декабре месяце 2004 года»SQL Запросы на определенный месяц

У меня большинство подзапрос вниз для того, чтобы разобрать то, что еще требуется, однако я не знаю, как получить результаты только с декабря 2004 года, независимо от того, когда OpenDate. Мне не удалось заставить поле OpenDate хорошо играть с DATEPART (месяц, x) в моем запросе из-за того, что это ограничение не имеет значения, когда оно было открыто.

Ниже приведена таблица «Помощь».

CREATE TABLE Assists 
(
AssistID   INT    IDENTITY NOT NULL PRIMARY KEY, 
OpenDate   DATE   NOT NULL DEFAULT GETDATE(), 
CloseDate   DATE   NULL, 
ContactType   VARCHAR(15)  NOT NULL, 
ReferralSource  VARCHAR(60)  NULL, 
RefPhone   VARCHAR(10)  NULL, 
RefConfidential  BIT    NULL, 
RefFollowUpNeeded BIT    NULL, 
AssistType   VARCHAR(55)  NOT NULL, 
SpecialistID  INT    NOT NULL 
    CONSTRAINT fk_Assists_Specialists FOREIGN KEY (SpecialistID) REFERENCES Specialists(SpecialistID), 
ClientID   INT    NOT NULL 
    CONSTRAINT fk_Assists_Clients  FOREIGN KEY (ClientID)  REFERENCES Clients(ClientID), 
CONSTRAINT ck_Assists_OpenDate CHECK (OpenDate <= GETDATE()), 
CONSTRAINT ck_Assists_CloseDate CHECK (CloseDate <= GETDATE()), 
CONSTRAINT ck_Assists_RefPhone CHECK (RefPhone LIKE REPLICATE('[0-9]',10)), 
) 

Любая помощь очень ценится.

+0

что вы пробовали? – mxix

+0

Различные комбинации DATEPART(), GETDATE(), DATEADD() и DATEFROMPARTS(). – user3259628

ответ

1

Я думаю, что эти условия вы должны смотреть:

  • OpenDate в или до декабря 2004 И
  • CloseDate либо NULLИЛИ в или после декабря 2004

SELECT * 
FROM Assists 
WHERE OpenDate <= '20041231' 
AND (CloseDate IS NULL OR CloseDate >= '20041201') 
+0

Я думаю, что это удовлетворяет требованиям. Спасибо за ответ. – user3259628

+0

Отлично! Примите ответ, если он решает вашу проблему. –

+0

Я думаю ... И COALESCE (CloseDate, '20141201')> = '20141201'; означает то же самое и более распространено. –

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