Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Вниз

Как в MSSQL через INSERT вставить поле DATE   Найти похожие ветки 

 
kserg@ukr.net   (2001-12-14 12:12) [0]

Привет. В таблице есть поле типа DateTime.
При попытке вставки новой записи через INSERT...,
где дату представляю как строку вылетает ошибка
(а в Interbase такой финт проходил)

quTemp1.SQL.Add("INSERT INTO Test (data1) VALUES ("
+#39+ DateToStr(Date)+#39+")");



Догадываюсь, что надо значение конвертнуть.
Подскажите,как правильно это сделать.
Заранее благодарен.


 
Mick   (2001-12-14 12:14) [1]

И что вы все так не любите параметрические запросы?


 
SQLMan   (2001-12-14 12:49) [2]

Все дело в формате. Я поступаю следующим образом:

...INSERT INTO ... VALUES (GetDate());

Текущую дату и время MS SQL таким образом проглатывает.

Удачи.


 
kserg@ukr.net   (2001-12-14 12:55) [3]

>SQLMan - идея понятна и ваш вар-т для вставки новой записи вполне пойдет,
а как быть когда надо изменить дату через UPDATE ?
Ведь суть проблемы остается.


 
Mick   (2001-12-14 12:59) [4]

А если клиент хочет вставить свою системную дату, а
сервер стоит в другом часовом поясе?


 
Tonie   (2001-12-14 13:07) [5]

По моему Mick (14.12.01 12:14) прав
..Sql = "INSERT INTO Test (data1) VALUES (:MyDate)"
параметр должен быть DateTime
потом ..ParamByName("MyDate").AsDateTime := MyDate


 
SQLMan   (2001-12-14 13:16) [6]

>Mick- А зачем так заморачиваться? Ведь время и дата сервера имеют больший приоритет. А в случае UPDATE дату и время придется конвертировать через DateTimeToStr. А лучше всего использовать параметр! Это будет и проще и надежнее.


 
Tonie   (2001-12-14 13:33) [7]

Если эта дата на уровне сервера известна так лучше ее вообще триггером вставлять


 
Mick   (2001-12-14 13:54) [8]

SQLMan: Клиент например хочет вставить астрономическое время сделки (местное) и чей-то приоритет его не волнует.

А про то как "проще и надежнее" человеку был сразу дан ответ.


 
kserg@ukr.net   (2001-12-14 14:22) [9]

Благодарю всех за содействие.
Не услышав нужного ответа (дискуссия пошла в напр-нии "ЧТО лучше", хотя меня интересовало, что дает ошибку),
всё же пришлось самому "копать" глубже и оказалось, что ошибка при вставке возникала из-за разных форматов представления даты: в БД мм.дд.гг , а я упорно пытался воткнуть дд.мм.гг .
Вот уж наверное ГРАБЛИ, котр. многие прошли...

Т.е. вставить дату через SQL-insert можно используя функцию CAST() или просто представляя дату как строку, только в КОРРЕКТНОМ формате.


 
Tonie   (2001-12-14 14:29) [10]

При использовании параметров этих "граблей" нет, но если непременно желается так писать, то тогда действительно CAST или CONVERT


 
Delirium   (2001-12-14 16:03) [11]

MSSQL опримально работает с форматом yyyymmdd, т.е.
"10 января 2001" = "20010110"


 
SQLMan   (2001-12-14 17:11) [12]

Господа программеры! Автор прав. Все зависит от того, в каком формате представляется дата в SQL Server. Можно писать и через "December 14, 2001" или "20011214", причем как обычную строку:
... WHERE Date1="20011214"


 
Delirium   (2001-12-14 17:15) [13]

>SQLMan
Формат yyyymmdd - универсальный и ни от чего не зависит, по крайней мере в
MSSQL 6.5-2000


 
SQLMan   (2001-12-14 17:27) [14]

>Delirium
Правда, не учтя особенности этого формата, можно пытаться записать дату в формате, отличном от принятого в SQL Server по умолчанию. Насколько мне известно, формат даты зависит от региональных установок. Не так ли?


 
Delirium   (2001-12-14 18:13) [15]

>SQLMan
Не надо спорить, проверь если не веришь, формат yyyyddmm не зависит ни от каких региональных и иных установок в MSSQL.


 
Delirium   (2001-12-14 18:17) [16]

Ошиблся yyyymmdd , конечно :)
Он существует наравне с принятыми региональными форматами.


 
kserg@ukr.net   (2001-12-19 13:22) [17]

Раз пошла такая песня - ещё вопросик.
А где в MSSQL можно настроить формат даты?
Что то я с ходу и не нашел...
(я понял, что с региональными установками MSSQL плохо дружит)


 
Delirium   (2001-12-19 13:29) [18]

Читай хелп по SET DATEFORMAT



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2002.01.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.6 MB
Время: 0.027 c
14-75659
anod
2001-11-15 21:54
2002.01.24
Линии


1-75561
mart
2002-01-06 13:08
2002.01.24
Потоки. Крит. секции.


1-75592
Анатолий
2002-01-01 03:54
2002.01.24
Картинка до загрузки


7-75694
aleXXoft
2001-10-11 12:54
2002.01.24
PC-speaker & SoundBlaster


1-75581
Alex007
2002-01-06 22:11
2002.01.24
Кнопки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский