|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Здравствуйте, всем. Много раз где встречалось, что SSMS должен для отображения даты использовать локальные настройки винды. Так ли это? С десятичным разделителем прекрасно дружит, достаточно перезапросить запрос после смены в винде. Менял в обоих английиских SSMS(у меня 12 и 14 стоят) в options->environment->international settings->language с английского на same as windows. Других вариантов там нет (языковых пакетов студии не стоит), винда русская. Без результата. Если для отображения dd.mm.yyyy нужно ставить русский SSMS, то чем майкрософт это объясняет? ЗЫ. Конверт просьба не советовать, с ним понятно. Нужно просто для удобства отладки хранимок, порой тяжело читать дату по англицки ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 14:13 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr, дата 2006-03-26 00:00:00 не устраивает, что ли? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 16:06 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Нет. Не устраивает. От слова совсем. А вас устраивает? Ну кроме: просто привык к формату dmy по жизни. Крайне "удобно" к примеру скопипастить ее и подать на вход хранимке при дефолтном русском языке и dmy формате. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 16:16 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr, Кто передает дату в формате, отличном от yyyymmdd, рано или поздно начинает страдать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 16:19 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Простите, но забудьте про строки. Где у меня написано, что я с датами работаю как со сроками? У меня везде на входе и выходе хранимок дата именно ДАТА. Люди, простой вопрос: SSMS должен для ОТОБРАЖЕНИЯ ДАТЫ использовать локальные настройки винды или зависит от языка SSMS и не лечится? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 16:27 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
VladlmlrА вас устраивает? Вполне, т.к. это стандарт. Вы программист или бухгалтер, стесняюсь спросить? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 16:47 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr, VladlmlrГде у меня написано, что я с датами работаю как со сроками? вот тут написано: Vladlmlr"удобно" к примеру скопипастить ее и подать на вход хранимке Скопипащенное значение как раз будет строковым литералом. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:08 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, я думал понятно: Крайне "удобно" к примеру скопипастить ее (ДАТУ) и подать на вход хранимке В SSMS при дефолтном русском языке и dmy формате и ВХОДНОМ ПАРАМЕТРЕ ХРАНИМКИ ТИПА ДАТА. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:19 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr, Vladlmlrпримеру скопипастить ее (ДАТУ) и подать на вход хранимкеВы мне пытаетесь доказать, что литерал в кавычках -- это не строка? Типа если написать '20200101' -- то это строка, а если написать @date = '20200101', то '20200101' перестанет быть строкой? Vladlmlrри дефолтном русском языке и dmy форматеА страдать вы начнете тогда, когда дефотный язык окажется не русским. При этом для строки формата yyyymmdd пофиг, какой установлен язык: этот формат всегда интерпретируется однозначно. Но охота себе усложнять жизнь и расладывать грабельки - на здоровье. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2020, 17:31 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Vladlmlr, А страдать вы начнете тогда, когда дефотный язык окажется не русским. При этом для строки формата yyyymmdd пофиг, какой установлен язык: этот формат всегда интерпретируется однозначно. Но охота себе усложнять жизнь и расладывать грабельки - на здоровье. Вы сильно удивитесь, но не страдаю и не буду страдать, т.к. дататайму=флоату сильно пофиг какой у вас язык. Представляете, там целая часть за дату отвечает, дробная за время ;-) Для этого собственно типы и придуманы, как правильно трактовать байтики. Мне искренне жаль, людей которые извращают это понятие и любой тип загоняют в строку. В последний раз: в хранимках входной параметр типа дата, выходные поля типа дата. Весь вопрос только удобства работы в SSMS. Любое уважающее себя приложение должно показывать данные в соответствии с региональными настройками пользователя. Дробный же разделитель соизволили корректно показать (не остались на своей точке и не кричат, что это стандарт). Чем дата хуже? Поэтому и простой вопрос: SSMS может показать дату не в формате языка интерфеса и у меня глюк требующий лечения? ИЛИ этот вопрос останется без ответа? ЗЫ. Ну простите, что привык к английскому интерфейсу и к русской дате. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 10:32 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr т.к. дататайму=флоату сильно пофиг какой у вас язык. Представляете, там целая часть за дату отвечает, дробная за время ;-) Vladlmlr В последний раз: в хранимках входной параметр типа дата, выходные поля типа дата. Вы что, всерьез считаете, что клиент транслирует дату во внутренний формат и только потом передет серверу? Если нет, то каким боком формат отображения даты у клиента может влиять на формат даты, воспринимаемый сервером? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 11:05 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr, VladlmlrВы сильно удивитесь, но не страдаю и не буду страдать, т.к. дататайму=флоату сильно пофиг какой у вас язык. Представляете, там целая часть за дату отвечает, дробная за время ;-) Для этого собственно типы и придуманы, как правильно трактовать байтики. Мне искренне жаль, людей которые извращают это понятие и любой тип загоняют в строку. В последний раз: в хранимках входной параметр типа дата, выходные поля типа дата.Ага, дата = флоат, а еще корабли бороздят космическое пространство, бла-бла-бла. Вы вообще не одупляете, о чем вам пишут. Когда вы копируте якобы дату из вашего рекордсета, то вы копируете строку. Когда вы подставляете значение даты в значение параметра, вы подставляете строку. В вызове Код: sql 1.
параметру присваивается именно строка, и именно в этот момент происходит неявная конвертация из строки в тип параметра. И именно в этом месте если в строке задан формат, отличный от yyyymmdd, то при конвертации применяются текущие региональные настройки сессии. В mssql нет возможности задать литерал типа дата-время, как, например задаются бинарные значения через префикс 0x. И обычно входная дата передается серверу строкой. Я очень удивлюсь, если вы найдете хотя бы одну клиентскую библиотеку, которая сделает такой вызов на сервере, после которого в профайлере будет написано Код: sql 1.
(т.к. якобы дататайму=флоату) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 11:21 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич, да, дата во флоат формате говорит о многом... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 11:45 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич Когда вы копируте якобы дату из вашего рекордсета, то вы копируете строку. Когда вы подставляете значение даты в значение параметра, вы подставляете строку. В вызове Код: sql 1.
параметру присваивается именно строка, и именно в этот момент происходит неявная конвертация из строки в тип параметра. И именно в этом месте если в строке задан формат, отличный от yyyymmdd, то при конвертации применяются текущие региональные настройки сессии. Если вы думаете, что это кому то не понятно, жаль. Каждый думает в меру своей испорченности. Я сталкиваюсь со датой, как со строкой только в SSMS. Ладно бы хоть действительно выдавал в дефолте yyyymmdd, а то или дефисы убирай после копипаста или приводи полностью к русской сессии. В mssql нет возможности задать литерал типа дата-время, как, например задаются бинарные значения через префикс 0x. И обычно входная дата передается серверу строкой. Я очень удивлюсь, если вы найдете хотя бы одну клиентскую библиотеку, которая сделает такой вызов на сервере, после которого в профайлере будет написано Код: sql 1.
(т.к. якобы дататайму=флоату) declare @dt datetime = 1.5 select '1', @dt select @dt = @dt - 0.5 select '2', @dt go CREATE PROCEDURE test @t datetime AS SELECT @t go exec test 1.5 exec test '19000102 12:00:00.000' exec test '1900-01-02 12:00:00.000' Резалт: 1 1900-01-02 12:00:00.000 2 1900-01-02 00:00:00.000 1900-01-02 12:00:00.000 1900-01-02 12:00:00.000 1900-02-01 12:00:00.000 Наслаждайтесь (отдельно во вложении снимок трейса, где как раз exec test 1.5) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 12:38 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Владислав Колосов Гавриленко Сергей Алексеевич, да, дата во флоат формате говорит о многом... Да. Очень люблю работать с датойтаймом именно как флоат. Просто прибавить/отнять любое количество дней (целое), любое время накинуть (дробное), откунуть дробную часть(время), получить дату или наоборот откунуть целое и получить время. Доктор, я болен? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 12:50 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr Владислав Колосов Гавриленко Сергей Алексеевич, да, дата во флоат формате говорит о многом... Да. Очень люблю работать с датойтаймом именно как флоат. Просто прибавить/отнять любое количество дней (целое), любое время накинуть (дробное), откунуть дробную часть(время), получить дату или наоборот откунуть целое и получить время. Доктор, я болен? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 16:38 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Да признаться в своей пурге тяжело. Но хоть без хамства про оддупляю. Если бы на ошибку указали конкретно, понял и простил бы. Может для кого-то будет полезно, а то с такими "гуру": дататайм 8 байтов хранит 4 байта целое - сутки от 1.1.1900, и 4 дробная время, смолдатайм тоже самое, но 2 + 2. Прекрасно кастится с флоатом и позволяет проводить любые операции над датой, как над флоат и обратно флоат трактовать как дату: declare @dt datetime = 1 declare @f float = cast(@dt as float) select 'раз', @dt, @f, cast(@f as datetime), cast(@dt as varbinary(8)), cast(@f as varbinary(8)) select @f = @f + 1.0/24/60/60/300, @dt = @f select 'два', @dt, @f, cast(@f as datetime), cast(@dt as varbinary(8)), cast(@f as varbinary(8)) резалты: раз 1900-01-02 00:00:00.000 1 1900-01-02 00:00:00.000 0x0000000100000000 0x3FF0000000000000 два 1900-01-02 00:00:00.003 1,00000003857961 1900-01-02 00:00:00.003 0x0000000100000001 0x3FF000000A5B2BAD Пальчиком поводите по предпоследнему полю, поймите как хранится дататайм. Что характерно по теме вопроса НИ СЛОВА ;-( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:18 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Сообщение специально для всех, кто ведется на то, как классно работать с датой через float. Для работы с датой-временем уже давно сделан необходимый набор функций. На сдачу этот набор функци работает с новыми типами datetime2 и далее по списку. Товарищ Vladlmlr несет чушь, не слушайте его. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:28 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr Люди, простой вопрос: SSMS должен для ОТОБРАЖЕНИЯ ДАТЫ использовать локальные настройки винды или зависит от языка SSMS и не лечится? Он не просто должен, а использует настройки Windows. А вообще - поле даты числовое. Как и в Excel. Он не просто должен, а использует настройки Windows. Русский SSMS для этого совершенно не нужен. А вообще - поле даты числовое. Как и в Excel. Вполне себе использую русские региональные настройки. Даты из поля таблицы в строку запроса не копирую - оно мне не сильно-то надо... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:32 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Vladlmlr Да признаться в своей пурге тяжело. Если что, напоминаю, что особенно яростное оппонирование началось вот с этого: Гавриленко Сергей Алексеевич В mssql нет возможности задать литерал типа дата-время, как, например задаются бинарные значения через префикс 0x. И обычно входная дата передается серверу строкой. Я очень удивлюсь, если вы найдете хотя бы одну клиентскую библиотеку, которая сделает такой вызов на сервере, после которого в профайлере будет написано Код: sql 1.
(т.к. якобы дататайму=флоату) Так вот, попробуйте-таки привести пример клиентской библиотеки, у которой в клиентском вызове передается именно datetime, а профайлер показывает передачу числового типа. Мне было бы интересно с такой библиотекой ознакомиться. Ну, а самому в T-SQL можно делать многое, не являющееся общепринятым, кто ж с этим спорит. Vladlmlr Нужно просто для удобства отладки хранимок, порой тяжело читать дату по англицки ;-) А по-флоатски не тяжело? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:36 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
AndrF, AndrFОн не просто должен, а использует настройки Windows Где написано, что должен именно для дат? Если бы не использовал, то у всех с русской локалью getdate() рисовал бы 15.01.2020. А на машинах с английской локалью - 01/15/2020. Очевидно, что SSMS не рисует тип datetime таким образом. AndrFА вообще - поле даты числовое.Поле даты -- это набор байт, который сервер интерпретирует как дату. Поле int -- это набор байт, которые сервер интерпретирует как int. Строка -- это набор байт, которые сервер интерпретирует как строку. Так что все поля числовые. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:38 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Гавриленко Сергей Алексеевич AndrF, AndrFОн не просто должен, а использует настройки Windows Где написано, что должен именно для дат? Если бы не использовал, то у всех с русской локалью getdate() возвращал бы 15.01.2020. А на машинах с английской локалью - 01/15/2020. Очевидно, что SSMS не рисует тип datetime таким образом. Верно. А я что-то стормозил. Рисует 2020-01-16 05:47:16.073. Но видимо так привык, что уже и не замечаю... Гавриленко Сергей Алексеевич AndrFА вообще - поле даты числовое. Число. Вы вполне можете сделать, к примеру PRINT GETDATE()+0.5. Ну можете считать набором байт, если удобно. Который является числом и обрабатывается в соответствии с настройками локали для данного типа поля. P.S Можно ведь и побайтно сравнить... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 17:45 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
AndrF, AndrFВы вполне можете сделать, к примеру PRINT GETDATE()+0.5 А в плане (Scalar Operator(getdate()+'1900-01-01 12:00:00.000')) Еще, к примеру, я могу пнуть ежика, после чего он полетит, но было бы странно после это считать ежика птицей. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 18:00 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
AndrF Число. Вы вполне можете сделать, к примеру PRINT GETDATE()+0.5. Ну можете считать набором байт, если удобно. Который является числом и обрабатывается в соответствии с настройками локали для данного типа поля. P.S Можно ведь и побайтно сравнить... можно ещё написать PRINT '0.5' + 0.5 , вы забыли про неявные преобразования насчёт побайтно - отличная идея какой числовой тип соответствует типу datetime? так чтоб хранилось один в один ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2020, 18:07 |
|
Английский SSMS + региональные настройки
|
|||
---|---|---|---|
#18+
Наконец-то и до темы вопроса добрались ;-) Огромное спасибо за это всем не тролям. AndrF Верно. А я что-то стормозил. Рисует 2020-01-16 05:47:16.073. Но видимо так привык, что уже и не замечаю... AndrF, я так и не понял и Вас в двух местах по разному. У вас зависит отображение от региональных настроек? или всегда yyyy-mm-dd? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2020, 08:55 |
|
|
start [/forum/topic.php?fid=46&msg=39914231&tid=1686646]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 21ms |
total: | 165ms |
0 / 0 |