Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
кладовщик Member Откуда: Сообщений: 563 |
Есть процедура с параметрами типа varchar (10), с клиента получает такой параметр и в коде его преобразует в переменную типа datetime и потом все дела делает уже с этой переменнойALTER PROCEDURE my_proc (@D1 varchar(10)) as begin DECLARE @Date1 datetime; SET @Date1 = CONVERT(datetime, @D1, 104); --всякий код с переменной @Date1 ... Или это ок? ----- Не люблю Progress OpenEdge. |
21 май 19, 11:14 [21889524] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1698 |
кладовщик, Ну как минимум убиваете прослушивание параметров. Плохо ли это или хорошо зависит от запросов которые будут эту вашу переменную использовать |
21 май 19, 12:12 [21889601] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
Грабельки раскладываете. Не то, чтобы они прям критичные, но требуют от клиентов, чтобы они всегда склеивали дату в 104 формате. Ну и 4 байта на date меньше десяти на varchar. |
21 май 19, 13:32 [21889691] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||
21 май 19, 14:23 [21889761] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
а есть ли трехбайтные регистры? |
||||
21 май 19, 14:56 [21889792] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8353 |
Посетитель, БД вообще без разницы - какие у кого регистры. А вот место для хранения - существенно. |
21 май 19, 16:18 [21889868] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
Всё так. но какое отношение имеет размер параметра к месту для хранения? |
||
21 май 19, 16:20 [21889871] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
Потому что нам разве не всё равно? |
||||
21 май 19, 16:35 [21889888] Ответить | Цитировать Сообщить модератору |
Посетитель Member Откуда: Сообщений: 1210 |
это было не опровержение вашей поправки, я абсолютно согласен с тем, что тип date занимает 3 байта. но если мы говорим про данную конкретную ситуацию, то параметр физически передается через стек. и три байта, или четыре туда засунуть - без разницы. правда, в случае со строкой туда тоже, вероятно, пойдет адрес, а не все 10 байт. |
||||
21 май 19, 16:42 [21889893] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8353 |
Для регистра на имеет значения, но 3 не требуют явного преобразования. В контексте вопроса - нет, не ОК, т.к. полученный результат будет зависеть от языка подключения. Могут поменяться местами день и месяц, если дату не передавать в ANSI текстовом формате. |
21 май 19, 17:51 [21889967] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
21 май 19, 17:55 [21889973] Ответить | Цитировать Сообщить модератору |
uaggster Member Откуда: Сообщений: 961 |
Ну, значит будет падать при передаче в хранимку любой кривой даты. Try_Convert бы хоть использовали. кладовщик, если не секрет - зачем это? В чем сакральный смысл? Интересно. :-) |
||||
22 май 19, 12:37 [21890565] Ответить | Цитировать Сообщить модератору |
кладовщик Member Откуда: Сообщений: 563 |
Дата не вручную вводится, а с контрола, т.е. '01.15.2019' ты не введешь, как я понимаю.
Для меня это тоже секрет. Не думаю, что дело в сниффинге параметров. Собственно, для того и тему создал. Быстрым гуглением не нашёл такого - чтобы дата передавалась в процедуру как текст. Думал, у кого-то с форума встречался такой кейс. |
||||
22 май 19, 13:35 [21890688] Ответить | Цитировать Сообщить модератору |
Диам Member Откуда: Сообщений: 1481 |
кладовщик, если не использовать convert, то можно в начале процедуры задавать SET Dateformat DMY Иначе, при вызове процедуры, например, с линуксового сайта, где система использует английские параметры окружения, ваша хранимка также будет настроена на использование английских установок, т.е. дата из текста будет браться как MDY или YMD |
23 май 19, 01:04 [21891386] Ответить | Цитировать Сообщить модератору |
Кесарь Member Откуда: Сообщений: 463 |
Лет десять работал на системе, в которой ВСЕ параметры в принципе передавались как текст. Никаких особых проблем не было с этим. |
23 май 19, 12:30 [21891779] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
А если их сотни и пишутся в разных местах по всему Земному шару (или индусами на аутсорсинге!)? Все ли будут чётко придерживаться общих правил? |
||
23 май 19, 12:47 [21891805] Ответить | Цитировать Сообщить модератору |
Кесарь Member Откуда: Сообщений: 463 |
Ну это само собой. Клиент один был, конечно. Но если система открытая, то тут нет никакого технического решения в принципе. Только организационные. Потому что, как показывает практика, косячить люди умеют и при использовании xml и json и вообще при любом способе передачи параметров. * xml и json имеется в виду использование этих форматов для упаковки параметров в один блок. |
23 май 19, 12:56 [21891821] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
|
||
23 май 19, 14:19 [21891987] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
а как все дружно договариваются не целые числа передавть? |
||
23 май 19, 14:22 [21891996] Ответить | Цитировать Сообщить модератору |
Кесарь Member Откуда: Сообщений: 463 |
Клиент один, проблем нет. |
||
23 май 19, 15:08 [21892103] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |