Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глюк с настройками даты, Глюк с настройками даты 
:(
    Опции темы
ssboy
Дата 15.9.2005, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.8.2005

Репутация: нет
Всего: нет



Люди, помогите, плиз!
Все знают, что в MS SQL при написании запросов с участием типа "дата/время" месяц нужно ставить на первое место. Сервак работал нормально, вдруг я обнаружил, что на серваке это правило перестало действовать и теперь на первом месте стоит день. Что надо сделать, чтобы все вернуть на прежнее место? Все проги дают ошибку конвертации из-за такой каши с настройками.
PM MAIL   Вверх
ssboy
Дата 15.9.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 26.8.2005

Репутация: нет
Всего: нет



Использовал sp_defaultlanguage, помогло.
PM MAIL   Вверх
Петрович
Дата 16.9.2005, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 1
Всего: 55



1. В программе крайне нежелательно использовать текстовое представление даты и времени. Испрользуй передачу таких значений через параметры запроса (Params)
2. В соединении с БД используй явное указание формата даты и времени. Например, если после соедиения с БД выполнить команду:
Код

SET DATEFORMAT dmy

то все даты в данном соединении сервер будет воспринимать как DD.MM.YYYY.
3. Выполни настройку SQL-сервера, но нет гарантии что тебе ее кто-то снова не изменит. Я этим способом не пользуюсь, поэтому даже не знаю как это сделать smile.




--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Papirus
Дата 16.9.2005, 08:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Как то на форуме мне посоветовали одну вещь. Передавать на сервер даты в формате
Код

'20050915'

Т.е. как текст где слитно идут годмесяцдень. Очень мне нравиться такой способ. Он не зависит от настроек сервака.
Еще при написании запросов можно явно конвертить дату в любой формат - "сервак поймет"
Код

convert(datetime,#17/02/2005#, 102)

PM MAIL ICQ   Вверх
boevik
Дата 18.9.2005, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 15
Всего: 35



Цитата(Papirus @ 16.9.2005, 08:32)
Как то на форуме мне посоветовали одну вещь. Передавать на сервер даты в формате
Код

'20050915'

Т.е. как текст где слитно идут годмесяцдень. Очень мне нравиться такой способ. Он не зависит от настроек сервака.

Так же не зависимый формат 'yyyy-mm-dd'
Код

'2005-09-15'




--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
Jonny
Дата 19.9.2005, 07:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
Papirus
Дата 20.9.2005, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 19.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 1



Цитата(boevik @ 18.9.2005, 20:01)
Так же не зависимый формат 'yyyy-mm-dd'


Этот даже лучше, чем тот, что я предложил. Он не зависит от количества цифр при обозначении месяца и дня. '20050217' - обязательно должны быть 2. А в этом вполне прооходит '2005-2-9'.
smile

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0510 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.