![]() |
|
Модераторы: Akina |
![]()
|
|
| ssboy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.8.2005 Репутация: нет Всего: нет |
Люди, помогите, плиз!
Все знают, что в MS SQL при написании запросов с участием типа "дата/время" месяц нужно ставить на первое место. Сервак работал нормально, вдруг я обнаружил, что на серваке это правило перестало действовать и теперь на первом месте стоит день. Что надо сделать, чтобы все вернуть на прежнее место? Все проги дают ошибку конвертации из-за такой каши с настройками. |
|||
|
||||
| ssboy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 26.8.2005 Репутация: нет Всего: нет |
Использовал sp_defaultlanguage, помогло.
|
|||
|
||||
| Петрович |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1000 Регистрация: 2.12.2003 Где: Москва Репутация: 1 Всего: 55 |
1. В программе крайне нежелательно использовать текстовое представление даты и времени. Испрользуй передачу таких значений через параметры запроса (Params)
2. В соединении с БД используй явное указание формата даты и времени. Например, если после соедиения с БД выполнить команду:
то все даты в данном соединении сервер будет воспринимать как DD.MM.YYYY. 3. Выполни настройку SQL-сервера, но нет гарантии что тебе ее кто-то снова не изменит. Я этим способом не пользуюсь, поэтому даже не знаю как это сделать -------------------- Все знать невозможно, но хочется |
|||
|
||||
| Papirus |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Как то на форуме мне посоветовали одну вещь. Передавать на сервер даты в формате
Т.е. как текст где слитно идут годмесяцдень. Очень мне нравиться такой способ. Он не зависит от настроек сервака. Еще при написании запросов можно явно конвертить дату в любой формат - "сервак поймет"
|
||||
|
|||||
| boevik |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
Так же не зависимый формат 'yyyy-mm-dd'
-------------------- Никогда не говори никогда |
||||||
|
|||||||
| Jonny |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 3.8.2005 Репутация: нет Всего: нет |
Могу предложить следующую функцию, преобразования даты в строку для использования в димамическом SQL:
CREATE FUNCTION dbo.DateToStr (@date datetime ) RETURNS varchar(10) AS BEGIN Declare @dDate varchar(10) set @dDate= ''''+cast(year(@date) as varchar(4)) +case when month(@date)<10 then '0'+cast(month(@date) as varchar(1)) --10.07.2005 Jonni else Cast(month(@date) as varchar(2)) end +case when day(@date)<10 then '0'+cast(day(@date) as varchar(1)) else Cast(day(@date) as varchar(2)) end +'''' Return(@dDate) END |
|||
|
||||
| Papirus |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 298 Регистрация: 19.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Этот даже лучше, чем тот, что я предложил. Он не зависит от количества цифр при обозначении месяца и дня. '20050217' - обязательно должны быть 2. А в этом вполне прооходит '2005-2-9'. |
|||
|
||||
![]()
|
| Правила форума "MS SQL" | |
|
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MS SQL Server | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |