Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.24;
Скачать: CL | DM;

Вниз

Как в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.011 c
1-75608
Трынкин Сергей
2002-01-08 10:52
2002.01.24
Подскажите пожалуйста где взять ADOExpress Update Pack 1


1-75557
bit
2002-01-06 10:38
2002.01.24
Error


14-75651
Merlin
2001-11-27 11:54
2002.01.24
Пораскиньте мозгами :)


14-75667
MJH
2001-11-29 16:19
2002.01.24
AverTV Studio


1-75565
BuG
2002-01-05 01:56
2002.01.24
помагите плиз