Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2011, 23:51   #1
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
Вопрос Занесение даты в SQL-Server 2008

Подскажите пожалуйста! Каким образом можно занести программно в базу SQL, а именно в поле формата DATE дату с дэлфи где она виде всегда 31.12.2011 а вот на SQL Она 2011-12-31 ??? Самое интересное что дата вида 12.03.2011 заносится как почему то 2011-12-03 а должно быть 2011-03-12 !!!!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 14.03.2011, 06:30   #2
Silver_S
Форумчанин
 
Регистрация: 14.03.2011
Сообщений: 104
По умолчанию

Используйте формат 'yyyymmdd', то есть дата 12.03.2011 будет выглядеть как '20110312'. Если нужно и время, то 'yyyymmdd hh:nn:ss'
Silver_S вне форума Ответить с цитированием
Старый 14.03.2011, 07:45   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
$T@LKER
А ты как заносишь то? Просто строкой в запросе? тогда функция FormatDateTime тебе в помощь, почитай ее описание и как задать маску на формат yyyy-mm-dd
Или делай через параметрический запрос
http://www.programmersforum.ru/showthread.php?t=136394
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 14.03.2011, 11:05   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

не учите "плохому"!!

Уж сколько раз говорили - не хотите иметь проблем с указанием дат в запросах - используйте параметрические запросы!

Только параметрические запросы (и передача даты в качестве параметра) дают нормальное, надёжное решение, работающее независимо от настроек локали и без всяких танцев с бубном!


Я уже устал повторять одни и те же примеры кода, поэтому позволю себе отправить TC в поиск по форуму!

сходите в эту тему и в эту тему и в эту тему
там полно примеров.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.03.2011, 11:12   #5
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Офтоп: уже сигналы космических кораблей привели к общему стандарту, а привести к одному ГОСТ-у формат даты во все БД не могут. Куда смотрит ISO и Всемирная Огранизация по Защите Психики Программистов?
_SERGEYX_ вне форума Ответить с цитированием
Старый 14.03.2011, 12:09   #6
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Нашел инное решение на одном сайте:

Цитата:
Вывод даты в формате ДД.ММ.ГГГГ
Автор: Команда Kbyte.Ru | добавлено: 03.02.2011, 16:38 | просмотров: 189 (8+) | комментариев: 0 | рейтинг: x0
Вывод даты в формате ДД.ММ.ГГГГ при помощи T-SQL функции CONVERT.

Код:
SELECT CONVERT(nvarchar(10), GETDATE(), 104)
Как это работает?

Функция GETDATE() возвращает текущую дату и время.
Код 104 - указывает на то что, дата должна быть в формате ДД.ММ.ГГГГ

Подробную информацию можно найти по следующей ссылке:
http://msdn.microsoft.com/ru -ru/library/ms187928.asp
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Старый 14.03.2011, 13:30   #7
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Вывод даты и ввод даты - вроде бы разные понятия. А с любым форматом у Вас будет обязательная головная боль при вводе, особенно после изменения настроек сервера. Вам же сказали: только через параметры!!!
ReportCube вне форума Ответить с цитированием
Старый 14.03.2011, 14:29   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не учите "плохому"!!

Уж сколько раз говорили - не хотите иметь проблем с указанием дат в запросах - используйте параметрические запросы!
Позволю себе не согласиться с такой постановкой вопроса. Для начинающего программиста или простых проектов это отличное решение. А теперь представте себе ситуацию: в предзапроснике (или иначе в форме установки фильтра) несколько закладок, на каждой из которых можно задавать соответствующий перечень параметров. Я представляю себе во чтобы вылилась попытка параметризации в такой ситуации. Поступаю просто - на клиенте формирую выражение WHERE (и не только), модифицирую запрос в кверике и вперед. Кстати во втором посте отличное решение для MSSQL
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 14.03.2011, 15:06   #9
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

О каком отличном решении мы говорим? Отличное решение для получения из запроса в нужном для пользователя на данный момент времени формате дату и время. Это будет работать всегда, даже при изменении формата даты-времени в настройках сервера. Но! Вопрос был задан о передаче в запрос даты/времени. Сколько раз наступаем на одни и те же грабли? И, наконец, кто мешает всё необходимое передавать через параметры? Есть ограничение в количестве, но это где-то более 2тысяч. Зато гарантированно никаких проблем у заказчика - программа продолжает работать даже после переустановки сервера новым админом!!!
ReportCube вне форума Ответить с цитированием
Старый 14.03.2011, 15:20   #10
$T@LKER
Форумчанин
 
Аватар для $T@LKER
 
Регистрация: 28.03.2009
Сообщений: 393
По умолчанию

Всем спасибо за советы! Я приведу пример запроса вставки который я использую но он нехочет работать:

Код:
QueryUpdate.close;
                  QueryUpdate.SQL.Clear;
                  QueryUpdate.SQL.Add('insert into аренда (Комнат,Планировка,Цена,Цена_за_метр,Валюта,Район,Улица,Дом,Жилая,Кухня,Этаж,Этажность,Материал,Телефон,Телевизор,Холодильник,Мебель,Предоплата,Контактный_телефон,Примечание,Дата,N)'
                          + ' values ('+Ap.Cells[rows,1]+','+QuotedStr(Ap.Cells[rows,2])+','+Ap.Cells[rows,3]+','+Ap.Cells[rows,4]+','+QuotedStr(Ap.Cells[rows,5])+','+QuotedStr(Ap.Cells[rows,6])
                          +','+QuotedStr(Ap.Cells[rows,7])+','+QuotedStr(Ap.Cells[rows,8])+','+Ap.Cells[rows,9]
                           +','+ Ap.Cells[rows,10] +','+ Ap.Cells[rows,11]+','+Ap.Cells[rows,12]+','+QuotedStr(Ap.Cells[rows,13])+','+QuotedStr(Ap.Cells[rows,14])+','+QuotedStr(Ap.Cells[rows,15])+','
                           +QuotedStr(Ap.Cells[rows,16])+','+QuotedStr(Ap.Cells[rows,17])+','+QuotedStr(Ap.Cells[rows,18])
                           +','+QuotedStr(Ap.Cells[rows,19])+','+Ap.Cells[rows,20]+','+'convert(DATETIME, ''' + Ap.Cells[rows,21] + ''', 104)'+','+Ap.Cells[rows,22]+')');
                  QueryUpdate.ExecSQL;
Жирным выделана функция которая конвертирует дату из формата ДД.ММ.ГГГГ в ГГГГ-ММ-ДД. Функция работает проверял таким методом:

Код:
INSERT  into аренда (Комнат,Планировка,Цена,Цена_за_метр,Валюта,Район,Улица,Дом,Жилая,Кухня,Этаж,Этажность,Материал,Телефон,Телевизор,Холодильник,Мебель,Предоплата,Контактный_телефон,Примечание,Дата,N)
          values (1,'',11,11,'','','','',11,11,11,11,'','','','','','','','',(convert(DATETIME,'14.03.2011', 104)),1)
В первом варианте ошибка о невозможности преобразования типов! Тока не могу определить где она дабы её устранить!!
""Сериалы и компьютерные игры это словно вторая жизнь, которою ты проживаешь, во главе главного героя или персонажа, параллельно своей!""
$T@LKER вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БД SQL Server 2008 и Delphi Asblue БД в Delphi 6 04.12.2010 11:55
SQL server 2008 sargez SQL, базы данных 2 28.10.2010 13:58
sql server 2008 Neymexa Помощь студентам 1 25.03.2010 13:13
MS SQL Server 2008 и Visual Studio 2008 C# (Как работать с БД?) cherw9!40k Базы данных (ADO.NET, LinqToSql, ORM Entity Framework, NHibernate) 2 14.01.2010 20:51
c# и sql server 2008 BattleMage SQL, базы данных 3 14.09.2009 20:28