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

Откуда:
Сообщений: 5
хочу чтобы при добавление заказа дату заказа он поставил автоматически при помощи ф-и GETDATE
написала примитивную процедуру

create proc prAddOrder
@idcust int,
@orddate smalldatetime = getdate

as
insert into [Order] ( IdCust, OrdDate)
values (@idcust, @ordate )
print ' заказ добавлен'
return

но при выполнении процедуры выходит "Ошибка преобразования даты или времени из символьной строки"

что не так?
2 июн 12, 16:28    [12655755]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
iap
Member

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

покажите, как задаёте параметр @orddate.

Вообще-то, достаточно создать CONSTRAINT DEFAULT для OrdDate,
и никаких процедур/триггеров не понадобится!
2 июн 12, 16:30    [12655759]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
VseStrogo
Member

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

а вообще то, что я написала правильно) ?
была бы моя воля, я бы вообще все упростила, вообще ничего не делая))

я не указывала параметр @orddate при вызове процедуры, благополучно считая, что его указывать не обязательно, т.к у него есть значение по умолчанию - функция GetDate
2 июн 12, 16:39    [12655780]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
VseStrogo
iap,

а вообще то, что я написала правильно) ?
была бы моя воля, я бы вообще все упростила, вообще ничего не делая))

я не указывала параметр @orddate при вызове процедуры, благополучно считая, что его указывать не обязательно, т.к у него есть значение по умолчанию - функция GetDate

getdate - не функция, в данном контексте, по крайней мере
2 июн 12, 16:43    [12655791]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Aleksey V.P.
Member

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

Таблица

create table Order
(
  ID int NOT NULL identity( 1, 1),
  CustomerID int NOT NULL,
  OrderDate datetime NOT NULL constraint DF_Order_OrderDate default GetDate()
)
go


ХП

Create procedure prAddOrder @CustomerID int
as
begin
  insert into Order( CustomerID)
  values( @CustomerID);
  print 'Заказ добавлен';

  return;
end
go
2 июн 12, 17:15    [12655872]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Aleksey V.P.,

внимание, вопрос: как при помощи этой процедуры добавить заказ с заданной (а не текущей) датой?
2 июн 12, 17:17    [12655876]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Aleksey V.P.
Member

Откуда: Москва
Сообщений: 575
locky
Aleksey V.P.,

внимание, вопрос: как при помощи этой процедуры добавить заказ с заданной (а не текущей) датой?


Внимание, читаем первый пост ТС.
2 июн 12, 17:25    [12655891]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Aleksey V.P.
locky
Aleksey V.P.,

внимание, вопрос: как при помощи этой процедуры добавить заказ с заданной (а не текущей) датой?


Внимание, читаем первый пост ТС.

первый пост ТС описывает гипотетическую процедуру, которая должна действовать следующим образом:
1. Если дата передана - добавляется заказ с переданной датой
2. Если дата не передана - добавляется заказ с текущей датой

в противном случае ТС просто бы написал insert into ... values(...,GetDate()) и не задавал бы вопросов.
2 июн 12, 17:35    [12655912]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
locky
Aleksey V.P.
пропущено...


Внимание, читаем первый пост ТС.

первый пост ТС описывает гипотетическую процедуру, которая должна действовать следующим образом:
1. Если дата передана - добавляется заказ с переданной датой
2. Если дата не передана - добавляется заказ с текущей датой

в противном случае ТС просто бы написалА insert into ... values(...,GetDate()) и не задавалА бы вопросов.
Тут всё сложнее.
Тут женская логика!
2 июн 12, 17:39    [12655927]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
iap
locky
пропущено...

первый пост ТС описывает гипотетическую процедуру, которая должна действовать следующим образом:
1. Если дата передана - добавляется заказ с переданной датой
2. Если дата не передана - добавляется заказ с текущей датой

в противном случае ТС просто бы написалА insert into ... values(...,GetDate()) и не задавалА бы вопросов.
Тут всё сложнее.
Тут женская логика!

Да ну, женская логика тут как раз ни причем

Мне вот иногда тоже очень хотелось задавать функциональные дефолты для процудур, а никак!

И не надо рассказывать про "передавай null - а затем isnull(@param,defaultvalue)"
Вообще говоря - это не всегда срабатывает.
2 июн 12, 17:41    [12655933]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
qwerty112
Guest
locky
...
И не надо рассказывать про "передавай null - а затем isnull(@param,defaultvalue)"
Вообще говоря - это не всегда срабатывает.

а чем это плохо ?
нуу, и не "передавай", конечно, а значением по умолчанию
Create procedure prAddOrder @CustomerID int, @orddate datetime = null
as
begin
  insert into Order( CustomerID, OrdDate)
  values( @CustomerID, isnull(@param,getdate()));
  print 'Заказ добавлен';

  return;
end
go
2 июн 12, 17:45    [12655946]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Aleksey V.P.
Member

Откуда: Москва
Сообщений: 575
qwerty112
locky
...
И не надо рассказывать про "передавай null - а затем isnull(@param,defaultvalue)"
Вообще говоря - это не всегда срабатывает.

а чем это плохо ?
нуу, и не "передавай", конечно, а значением по умолчанию
Create procedure prAddOrder @CustomerID int, @orddate datetime = null
as
begin
  insert into Order( CustomerID, OrdDate)
  values( @CustomerID, isnull(@param,getdate()));
  print 'Заказ добавлен';

  return;
end
go


Кстати, вот это правильный вариант, а я, видимо, не правильно понял вопрос ТС :-)
2 июн 12, 18:08    [12656042]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Aleksey V.P.
qwerty112
пропущено...

а чем это плохо ?
нуу, и не "передавай", конечно, а значением по умолчанию
Create procedure prAddOrder @CustomerID int, @orddate datetime = null
as
begin
  insert into Order( CustomerID, OrdDate)
  values( @CustomerID, isnull(@param,getdate()));
  print 'Заказ добавлен';

  return;
end
go


Кстати, вот это правильный вариант, а я, видимо, не правильно понял вопрос ТС :-)


Плохого то, что в данном случае не выполняется условие "если не передана дата - выставлять текущую"
2 июн 12, 18:17    [12656077]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
qwerty112
Guest
locky
Aleksey V.P.
пропущено...


Кстати, вот это правильный вариант, а я, видимо, не правильно понял вопрос ТС :-)


Плохого то, что в данном случае не выполняется условие "если не передана дата - выставлять текущую"

выполняется

или, это намёк на то, что GETDATE() - это дата с временем ?
2 июн 12, 18:55    [12656146]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
qwerty112
locky
пропущено...


Плохого то, что в данном случае не выполняется условие "если не передана дата - выставлять текущую"

выполняется

или, это намёк на то, что GETDATE() - это дата с временем ?
Может, это намёк на разницу между текущей датой сервера и клиента?
Может, сервер в Москве, а клиент - во Владивостоке!
Сейчас ещё углубимся, и вспомним о UTC...

Кстати, VseStrogo куда-то подевалась.
Наверно, ей уже всё равно
2 июн 12, 19:01    [12656150]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
iap
qwerty112
пропущено...

выполняется

или, это намёк на то, что GETDATE() - это дата с временем ?
Может, это намёк на разницу между текущей датой сервера и клиента?
Может, сервер в Москве, а клиент - во Владивостоке!
Сейчас ещё углубимся, и вспомним о UTC...

Кстати, VseStrogo куда-то подевалась.
Наверно, ей уже всё равно

Я бы еще хотел напомнить о том, что NULL - это тоже таки валидное значение, как ни странно
И если вдруг с каких-то бодунов процедура будет заменять переданное мною валидное значение на непойми откуда взявшийся мусор - я буду огорчен
2 июн 12, 19:16    [12656172]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Aleksey V.P.
Member

Откуда: Москва
Сообщений: 575
iap
qwerty112
пропущено...

выполняется

или, это намёк на то, что GETDATE() - это дата с временем ?
Может, это намёк на разницу между текущей датой сервера и клиента?
Может, сервер в Москве, а клиент - во Владивостоке!
Сейчас ещё углубимся, и вспомним о UTC...

Кстати, VseStrogo куда-то подевалась.
Наверно, ей уже всё равно


Вообще-то выходные сейчас, отдыхает по всей видимости :-)
3 июн 12, 12:04    [12657374]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Massa52
Member

Откуда:
Сообщений: 387
Я бы еще хотел напомнить о том, что NULL - это тоже таки валидное значение, как ни странно
И если вдруг с каких-то бодунов процедура будет заменять переданное мною валидное значение на непойми откуда взявшийся мусор - я буду огорчен

Если NULL может быть валидным - надо добавить еще один параметр который всегда false и только, когда понадобится валидный NULL становится true.
3 июн 12, 16:05    [12657878]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Massa52
Я бы еще хотел напомнить о том, что NULL - это тоже таки валидное значение, как ни странно
И если вдруг с каких-то бодунов процедура будет заменять переданное мною валидное значение на непойми откуда взявшийся мусор - я буду огорчен

Если NULL может быть валидным - надо добавить еще один параметр который всегда false и только, когда понадобится валидный NULL становится true.

бред...в топку таких разработчиков с таким говнокодом
3 июн 12, 20:39    [12658612]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
qwerty112
Guest
Knyazev Alexey
Massa52
пропущено...

Если NULL может быть валидным - надо добавить еще один параметр который всегда false и только, когда понадобится валидный NULL становится true.

бред...в топку таких разработчиков с таким говнокодом

"норкоманские" требования (ТЗ)
а) хочу, чтобэ если не передано значение - вставляло текущую дату
б) хочу чтобэ если передаго неопределённое значение - вставляло это "неопределённое значение"

- приводят к "норкоманским" решениям ...

зы
я бы делал 2-мя процедурами и значением по умолчанию в таблице

ззы
locky
И если вдруг с каких-то бодунов процедура будет заменять переданное мною валидное значение на непойми откуда взявшийся мусор - я буду огорчен

если бы, не дай Бог, с каких-то х.,
какой-то сра-ый му**к пользователь, попробывал бы обратится ко мне с таким "огорчением",
я бы его долго бил ногами пристально посмотрел ему в морду-лица и послал бы на х-й оставил бы его вопрос без ответа...
4 июн 12, 14:38    [12661950]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
VseStrogo
Member

Откуда:
Сообщений: 5
после 3 сообщения я махнула рукой и убрала getdate, и вообще я не отдыхала)
4 июн 12, 22:40    [12664618]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
VseStrogo
после 3 сообщения я махнула рукой и убрала getdate, и вообще я не отдыхала)

Думаю вариант с @orddate smalldatetime = getdate
и дальнейшим
insert into [Order] ( IdCust, OrdDate)
values (@idcust, isnull(@ordate,getdate() )

вам таки подойдёт (хотя вообще говоря - это как бы костыль, но часто применяющийся)
4 июн 12, 23:49    [12664949]     Ответить | Цитировать Сообщить модератору
 Re: добавление заказа. ошибка с функцией GETDATE  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
locky
VseStrogo
после 3 сообщения я махнула рукой и убрала getdate, и вообще я не отдыхала)

Думаю вариант с @orddate smalldatetime = getdate
и дальнейшим
insert into [Order] ( IdCust, OrdDate)
values (@idcust, isnull(@ordate,getdate() )

вам таки подойдёт (хотя вообще говоря - это как бы костыль, но часто применяющийся)


@orddate smalldatetime = null
разумеется, сорри
4 июн 12, 23:49    [12664953]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить