Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 sql сравнение даты с периодом  [new]
Kroxf
Member

Откуда:
Сообщений: 5
вопрос в следующем есть А.табл и В.табл
А.табл содержит колонки bonus_id, pay_fact_date, Pay_Planperiod_id
В.табл содержит колонки PlanPeriod_id, date_start, date_end

цель найти строки в которых у bonus_id значение pay_fact_date не входит в Pay_Planperiod_id

логика вроде ясна найти к какому PlanPeriod_id относится pay_fact_date и сравнить с Pay_Planperiod_id при этом показать только те где найденный PlanPeriod_id <> Pay_Planperiod_id

на практике тупик...
19 май 11, 14:04    [10678098]     Ответить | Цитировать Сообщить модератору
 Re: sql сравнение даты с периодом  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
автор
на практике тупик...


Проблема "русские" слова в
автор
найти к какому PlanPeriod_id относится pay_fact_date и сравнить с Pay_Planperiod_id при этом показать только те где найденный PlanPeriod_id <> Pay_Planperiod_id


замеить на INNER JOIN, WHERE и NOT BETWEEN ... AND?
19 май 11, 14:10    [10678170]     Ответить | Цитировать Сообщить модератору
 Re: sql сравнение даты с периодом  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SELECT *
FROM A
JOIN B ON A.Pay_Planperiod_id=B.PlanPeriod_id AND (A.pay_fact_date<B.date_start OR A.pay_fact_date>B.date_end);
??
Есть некоторые тонокости.
  • Версия сервера?
  • Могут ли pay_fact_date, date_start и date_end содержать NULL?
  • Могут ли pay_fact_date, date_start и date_end содержать ненулевое время?

    Наконец, я, возможно, неправильно понял задачу
  • 19 май 11, 14:13    [10678198]     Ответить | Цитировать Сообщить модератору
     Re: sql сравнение даты с периодом  [new]
    Kroxf
    Member

    Откуда:
    Сообщений: 5
    pkarklin
    автор
    на практике тупик...


    Проблема "русские" слова в
    автор
    найти к какому PlanPeriod_id относится pay_fact_date и сравнить с Pay_Planperiod_id при этом показать только те где найденный PlanPeriod_id <> Pay_Planperiod_id


    замеить на INNER JOIN, WHERE и NOT BETWEEN ... AND?


    )) это я заметил,

    SELECT [bonus_id]
    FROM [bonus] s1
    INNER JOIN ( SELECT * FROM [Planperiod] ) s2
    ON s1.pay_fact_date > s2.date_start
    AND s1.pay_fact_date < s2.date_end
    AND s1.Pay_Planperiod_id <> s2.PlanPeriod_id

    но вопрос например в том, А если pay_fact_date = 2010-05-01 00:00:00.000
    date_start = 2010-05-01 00:00:00.000
    т.к PlanPeriod_id начинается с первого числа месяца date_start
    19 май 11, 14:35    [10678438]     Ответить | Цитировать Сообщить модератору
     Re: sql сравнение даты с периодом  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47142
    Kroxf,

    хоть Вы меня и игнорируете, но всё же спрошу: почему же
    s1.Pay_Planperiod_id <> s2.PlanPeriod_id
    ???
    19 май 11, 14:52    [10678608]     Ответить | Цитировать Сообщить модератору
     Re: sql сравнение даты с периодом  [new]
    Kroxf
    Member

    Откуда:
    Сообщений: 5
    iap
    SELECT *
    FROM A
    JOIN B ON A.Pay_Planperiod_id=B.PlanPeriod_id AND (A.pay_fact_date<B.date_start OR A.pay_fact_date>B.date_end);
    ??
    Есть некоторые тонокости.
  • Версия сервера?
  • Могут ли pay_fact_date, date_start и date_end содержать NULL?
  • Могут ли pay_fact_date, date_start и date_end содержать ненулевое время?

    Наконец, я, возможно, неправильно понял задачу



  • pay_fact_date может содержать NULL

    pay_fact_date, date_start время 00:00:00.000 а date_end время 23:59:59.000
    19 май 11, 14:59    [10678692]     Ответить | Цитировать Сообщить модератору
     Re: sql сравнение даты с периодом  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47142
    Kroxf
    pay_fact_date может содержать NULL
    И какой в это вкладывается смысл?
    Такая дата попадает в диапазан, не попадает или-таки неизвестно?
    Про версию всё же не сказали... Ну ладно. Это же не мне нужно!
    19 май 11, 15:13    [10678805]     Ответить | Цитировать Сообщить модератору
     Re: sql сравнение даты с периодом  [new]
    Kroxf
    Member

    Откуда:
    Сообщений: 5
    iap
    Kroxf
    pay_fact_date может содержать NULL
    И какой в это вкладывается смысл?
    Такая дата попадает в диапазан, не попадает или-таки неизвестно?
    Про версию всё же не сказали... Ну ладно. Это же не мне нужно!


    iap
    SELECT *
    FROM A
    JOIN B ON A.Pay_Planperiod_id=B.PlanPeriod_id AND (A.pay_fact_date<B.date_start OR A.pay_fact_date>B.date_end);


    Ваше предложение грамотное, значения может не быть какое-то время соответственно NULL, про версию Вы опять-же правы.
    итог: Вам спасибо!!!
    20 май 11, 08:26    [10681982]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить