powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / формат даты - зависимость от региональных настроек
24 сообщений из 24, страница 1 из 1
формат даты - зависимость от региональных настроек
    #38324588
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Подскажите куда копать.
Windows server 2008, MSSQL 2008

Хочу, чтоб заработали запросы вида
Код: sql
1.
2.
select CAST('2012.04.29' as smalldatetime)
select @@LANGUAGE


Сейчас первый выдает
Преобразование типа данных varchar в тип данных smalldatetime привело к выходу значения за пределы диапазона.
Второй выдает: русский.

У всех в настройках соединения прописан русский, системный формат русского dd.mm.yyyy.

Без Set dateformat[src], Cast, Convert и без универсальной записи YYYYMMDD.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324610
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVO, поясните, что значит "хочу, чтобы работал запрос с CAST, но без CAST"?
И зачем эти ограничения?
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324621
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOБез Set dateformat[src], Cast, Convert и без универсальной записи YYYYMMDD.
Mission: impossible.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324628
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVO,
Если желание вызвано способом хранения дат в таблице, то вполне подойдет
Код: sql
1.
select CAST(REPLACE('2012.04.29','.','') as smalldatetime)


ADVOБез Set dateformat[src], Cast, Convert и без универсальной записи YYYYMMDD. во всяком случае, явного YYYYMMDD нет :)
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324631
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cast для примера, что на формат ругнется.
Причина проста - нельзя править код, т.е. только серверные настройки.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324636
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVO, передаваемые данные тоже нельзя править? Настройками проблема не решается.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324645
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MinamotoADVO, передаваемые данные тоже нельзя править? Настройками проблема не решается.
Да, передаваемые данные нельзя править.
Раз 2012.29.04 разберет без проблем, то где-то заложен подобный формат.
Вот только где?
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324659
Гость333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOгде-то заложен подобный формат.
Вот только где?
Надо полагать, заложен разработчиками Microsoft в исходные коды SQL Server'а.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324666
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость333ADVOгде-то заложен подобный формат.
Вот только где?
Надо полагать, заложен разработчиками Microsoft в исходные коды SQL Server'а.
Код: sql
1.
2.
3.
4.
select CAST('2012-04-29 00:00:00' as smalldatetime)
select CAST('29-04-2012' as smalldatetime)
select CAST('29.04.2012' as smalldatetime)
select @@LANGUAGE--русский


Второй и третий вариант даты отображает без проблем.
Я думаю, что их сервер сравнивает с системной маской даты у Windows, выбранной локали.
Но почему первый вариант упорно впихивает день после года. Вот что мне непонятно.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324667
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мягко говоря, странная ситуация...
Код править нельзя, передаваемые данные править нельзя, в запросе выдается ошибка, но - 2012.29.04 разберет без проблем...

Что вам нужно-то?? Свой код дописать? Для себя данные вытянуть?
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324674
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007Мягко говоря, странная ситуация...
Код править нельзя, передаваемые данные править нельзя, в запросе выдается ошибка, но - 2012.29.04 разберет без проблем...
Что вам нужно-то?? Свой код дописать? Для себя данные вытянуть?
Нужно чтоб эти запросы заработали
Код: sql
1.
2.
3.
4.
select CAST('2012-04-29' as smalldatetime)
select CAST('29-04-2012' as smalldatetime)
select CAST('29.04.2012' as smalldatetime)
select @@LANGUAGE


Сейчас первый выдает ошибку.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324691
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOНужно чтоб эти запросы заработалиеще раз - для чего нужно?
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324699
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007ADVOНужно чтоб эти запросы заработалиеще раз - для чего нужно?
Чтоб сервер принимал оба варианта даты.
Потому что встречаются оба варианта, код править крайне нежелательно.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324705
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOНужно чтоб эти запросы заработали
Код: sql
1.
2.
3.
4.
select CAST('2012-04-29' as smalldatetime)
select CAST('29-04-2012' as smalldatetime)
select CAST('29.04.2012' as smalldatetime)
select @@LANGUAGE


Сейчас первый выдает ошибку.
для первого нужно set dateformat ymd (mdy) или соответствующий язык
для второго и третьего - set dateformat ydm (dmy)
одновременно не получится
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324708
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakillдля первого нужно set dateformat ymd (mdy) или соответствующий язык
для второго и третьего - set dateformat ydm (dmy)
одновременно не получится
Я правильно понимаю алгоритм - второй,третий находит по маске Windows для русской локали (dd.mm.yyyy).
А то что не находит - применяет us_english с маской mdy?
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324717
Фотография Shakill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOShakillдля первого нужно set dateformat ymd (mdy) или соответствующий язык
для второго и третьего - set dateformat ydm (dmy)
одновременно не получится
Я правильно понимаю алгоритм - второй,третий находит по маске Windows для русской локали (dd.mm.yyyy).
А то что не находит - применяет us_english с маской mdy?
для конвертации в smalldatetime проверяется соответствие строки текущей настройке dateformat. если строка не соответствует этой настройке или виду YYYYMMDD, сервер выдает ошибку
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324724
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Shakillдля конвертации в smalldatetime проверяется соответствие строки текущей настройке dateformat. если строка не соответствует этой настройке или виду YYYYMMDD, сервер выдает ошибкуТогда бы
Код: sql
1.
select CAST('2012-29-04' as smalldatetime)

не работал. А он работает.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324772
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOЯ правильно понимаю алгоритм - второй,третий находит по маске Windows для русской локали (dd.mm.yyyy).
А то что не находит - применяет us_english с маской mdy?неправильно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
set dateformat ymd
print convert(smalldatetime,'2012-04-29')
print convert(smalldatetime,'04.29.2012')
print convert(smalldatetime,'04-29-2012')
set dateformat ydm
print convert(smalldatetime,'2012-29-04')
print convert(smalldatetime,'29-04-2012')
print convert(smalldatetime,'29.04.2012')

В таком виде отрабатывает без ошибок, при отмене любого set dateformat выдает ошибку в отмененном пакете (на первый или второй запуск)
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324887
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я понял - все логично, указываем явно формат, выводим соответствующий.
Код: sql
1.
2.
3.
4.
set dateformat ymd
print convert(smalldatetime,'2012-04-29')
set dateformat ydm
print convert(smalldatetime,'2012-29-04')


А вот тут у меня мозг поплыл:
Код: sql
1.
2.
3.
4.
5.
6.
set dateformat ymd
print convert(smalldatetime,'04.29.2012')
print convert(smalldatetime,'04-29-2012')
set dateformat ydm
print convert(smalldatetime,'29-04-2012')
print convert(smalldatetime,'29.04.2012')


Указываем день крайним, а ставим в центр.
Ниже наоборот.
Объясните пожалуйста.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324891
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVOОбъясните пожалуйста.Это к терапевту разработчику :)
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324905
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007ADVOОбъясните пожалуйста.Это к терапевту разработчику :)
Есть бредовое предположение)
Код: sql
1.
2.
3.
set dateformat ymd
print convert(smalldatetime,'04.29.2012')
print convert(smalldatetime,'04-29-2012')

Т.к по указанной маске ymd дата не проходит, и формат не полный ISO, но видно где год 4-х значный, сервер переставляет этот год под заданную маску, т.е. первым.
Тогда сходится
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324911
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ADVOРаз 2012.29.04 разберет без проблем, то где-то заложен подобный формат.

Тогда и это сходится.
Получается если прописан русский, ищет по нему маску, находит dmy.
И имеем то же, что
Код: sql
1.
2.
set dateformat dmy
print convert(smalldatetime,'2012.29.04')

По маске уже не прошел, год захватил, поставил по маске в конец и получается 29.04.2012.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38324945
Фотография Ennor Tiegael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ADVO,

У логина, под которым работает ваш высеченный из камня софт, поставьте дефолтный язык русский.
...
Рейтинг: 0 / 0
формат даты - зависимость от региональных настроек
    #38325045
ADVO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ennor TiegaelADVO,
У логина, под которым работает ваш высеченный из камня софт, поставьте дефолтный язык русский. С самого начала настроен был для всех русский.
Дело даже не в софте, я запускал в QA, @@LANGUAGE показывал русский.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / формат даты - зависимость от региональных настроек
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]