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

Откуда:
Сообщений: 44
мне необходимо создать хранимую процедуру с входным параметром, которым будет являться дата.
у меня есть две таблицы Устройства и Ремонт. Дак вот мне нужно при вызове процедуры вводить параметр - дату и отталкиваясь от нее вывести все ремонты за период от этой даты до сегодняшнего дня. вроде бы всё просто, но тут столкнулась с такой проблемой,что он введенный параметр рассматривает не как дату, а как число и в днях прибавляет его к 01-01-1900. как быть? подскажите, пожалуйста.
вот мой код:
CREATE PROC proc1 @d DATETIME
AS
SELECT НазваниеМодель, ИнвентарныйНомер,ДатаРемонта, Причина, Стоимость
FROM Устройства INNER JOIN Ремонт ON Устройства.id_устройства=Ремонт.id_устройства
WHERE ДатаРемонта>@d
31 авг 09, 14:46    [7598351]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
https://www.sql.ru/faq/faq_topic.aspx?fid=109
31 авг 09, 14:48    [7598369]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36826
И куда же вводится параметр?
31 авг 09, 14:48    [7598372]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
A DateTime system object value that specifies a date and time between January 1, 1753 and December 31, 9999 to an accuracy of 3.33 milliseconds.

и

SmallDateTime A DataTime system object value that specifies a date and time between January 1, 1900 and June 6, 2079 to an accuracy of one minute.
31 авг 09, 14:49    [7598388]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
Гавриленко Сергей Алексеевич,

вызов процедуры
exec proc1 01012009
это например
31 авг 09, 14:49    [7598392]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36826
NektoN
Гавриленко Сергей Алексеевич,

вызов процедуры
exec proc1 01012009
это например
И что это процедуру вызывает?
31 авг 09, 14:50    [7598396]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
'20090831'
31 авг 09, 14:50    [7598398]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
tpg,

статью читала, пробовала, но увы не вышло... наверно криво пробовала...
с sql недавно просто познакомилась
31 авг 09, 14:51    [7598401]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
pkarklin,

спасибо большое))эта проблема побеждена теперь))
31 авг 09, 14:54    [7598417]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
теперь вышла на первое место другая совершенно проблема.
в таблице Устройства есть поля id,наименование,... и ДатаПокупки, СрокГарантии(в месяцах указывается) и Гарантийность
как сделать так, чтобы строка гарантийность заполнялась автоматически исходя из следующих соображений: if GETDATE()<DATEADD("m",СрокГарантии,ДатаПокупки) then Гарантийность=1
это конечно страшная запись, но отражает всю суть.
сделала вычисляемое поле, где расчитывается DATEADD, а как теперь к гарантийности это прикрутить??? да и чтоб актуальность сохранить... тут без триггера походу не обойтись?
31 авг 09, 15:00    [7598460]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36826
NektoN
теперь вышла на первое место другая совершенно проблема.
в таблице Устройства есть поля id,наименование,... и ДатаПокупки, СрокГарантии(в месяцах указывается) и Гарантийность
как сделать так, чтобы строка гарантийность заполнялась автоматически исходя из следующих соображений: if GETDATE()<DATEADD("m",СрокГарантии,ДатаПокупки) then Гарантийность=1
это конечно страшная запись, но отражает всю суть.
сделала вычисляемое поле, где расчитывается DATEADD, а как теперь к гарантийности это прикрутить??? да и чтоб актуальность сохранить... тут без триггера походу не обойтись?
Ну пересчитывайте раз в день джобом, если уж охото это поле материализовать.
31 авг 09, 15:02    [7598479]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Ну, можно и значение по умолчанию повесить, заменив IF на CASE. Но вот только не плохо бы было раз в день и пересчитывать это поле, заданием Агента, например.
31 авг 09, 15:05    [7598501]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
Гавриленко Сергей Алексеевич,

боюсь показаться непонятливой, но можно по-подробней?
31 авг 09, 15:05    [7598506]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
вы тут такие знатоки sql в прямом смысле слова, что я теряюсь...знакома не больше месяца с ним...и не понимаю еще много
если не сложно, можно поподробней
31 авг 09, 15:09    [7598545]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NektoN
вы тут такие знатоки sql в прямом смысле слова, что я теряюсь...знакома не больше месяца с ним...и не понимаю еще много
если не сложно, можно поподробней


Это не должно являться препятствием для чтения документации, которая даже на русском есть.
31 авг 09, 15:16    [7598593]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
pkarklin,

читаю...стараюсь...просто эти две проблемы нужно до вечера решить...
31 авг 09, 15:18    [7598602]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
NektoN
в таблице Устройства есть поля id,наименование,... и ДатаПокупки, СрокГарантии(в месяцах указывается) и Гарантийность
Спросите Вашего сотрудника, который эту БД проектировал:
зачем он создал поле "Гарантийность" ?

Почему нельзя это поле вычислять каждый раз при выборке данных?
31 авг 09, 15:19    [7598610]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NektoN
pkarklin,

читаю...стараюсь...просто эти две проблемы нужно до вечера решить...


Что Вам конкретно непонятно?
1. Как написать значение по умолчнию с использованием CASE?
2. Как пересчитывать значение этого поля запросом на UPDATE?
3. Как выполнять этот процессаавтоматически по расспианию?

ЗЫ. Я понимаю, что у Вас сжатые сроки, но прошу обратить внимание, что на этом форуме, обычно, дают сети, а не рыбу.
31 авг 09, 15:20    [7598616]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
pkarklin,

1 и 3
автор

ЗЫ. Я понимаю, что у Вас сжатые сроки, но прошу обратить внимание, что на этом форуме, обычно, дают сети, а не рыбу.

я всё понимаю и не прошу "рыбы"
31 авг 09, 15:28    [7598668]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
NektoN,

1. Выражение CASE (Transact-SQL)
3. Автоматизация задач администрирования (агент SQL Server)
31 авг 09, 15:31    [7598697]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с типом дата  [new]
NektoN
Member

Откуда:
Сообщений: 44
pkarklin,

спасибо большое
31 авг 09, 15:41    [7598757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить