Insert into sql пример дата

Привет. В таблице есть поле типа 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]

Инструкция SQL INSERT INTO и INSERT SELECT используются для вставки новых строк в таблицу. Существует два способа использования инструкций:

  1. Только значения : Первый метод предусматривает указание только значений данных, которые нужно вставить без имен столбцов.
  1. Имена столбцов и значения : При втором методе указываются имена столбцов и значения строк для вставки:


Запросы :

Способ 1 ( вставка только значений ):

После использования INSERT INTO SELECT таблица Student теперь будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 HARSH WEST BENGAL 8759770477 19

Способ 2 ( вставка значений только в указанные столбцы ):

Таблица Student теперь будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
5 PRATIK null null 19

Обратите внимание, что для столбцов, значения для которых не указаны, задается null .

Использование SELECT в инструкции INSERT INTO

Можно использовать инструкцию MySQL INSERT SELECT для копирования строк из одной таблицы и их вставки в другую.

Использование этого оператора аналогично использованию INSERT INTO . Разница в том, что оператор SELECT применяется для выборки данных из другой таблицы. Ниже приведены различные способы использования INSERT INTO SELECT :

  • Вставка всех столбцов таблицы : можно скопировать все данные таблицы и вставить их в другую таблицу.

Мы использовали инструкцию SELECT для копирования данных из одной таблицы и инструкцию INSERT INTO для их вставки в другую.

  • Вставка отдельных столбцов таблицы . Можно скопировать только те столбцы таблицы, которые необходимо вставить в другую таблицу.

Мы использовали инструкцию SELECT для копирования данных только из выбранных столбцов второй таблицы и инструкцию MySQL INSERT INTO SELECT для их вставки в первую таблицу.

  • Копирование определенных строк из таблицы . Можно скопировать определенные строки из таблицы для последующей вставки в другую таблицу с помощью условия WHERE с оператором SELECT . В этом случае нужно использовать соответствующее условие в WHERE .

Таблица 2: LateralStudent

ROLL_NO NAME ADDRESS PHONE Age
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Способ 1 ( вставка всех строк и столбцов ):

Этот запрос вставит все данные таблицы LateralStudent в таблицу Student . После применения SQL INSERT INTO SELECT таблица Student будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18
8 NIRAJ NOIDA 9786543210 19
9 SOMESH ROHTAK 9687543210 20

Способ 2 ( вставка отдельных столбцов ):

Этот запрос вставит данные из столбцов ROLL_NO , NAME и Age таблицы LateralStudent в таблицу Student . Для остальных столбцов таблицы Student будет задано значение null . После применения SQL INSERT SELECT таблица будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK Null null 18
8 NIRAJ Null null 19
9 SOMESH Null null 20
  • Выбор определенных строк для вставки :

Этот запрос выберет только первую строку из таблицы LateralStudent для вставки в таблицу Student . После применения INSERT SELECT таблица будет выглядеть следующим образом:

ROLL_NO NAME ADDRESS PHONE Age
1 Ram Delhi 9455123451 18
2 RAMESH GURGAON 9562431543 18
3 SUJIT ROHTAK 9156253131 20
4 SURESH Delhi 9156768971 18
3 SUJIT ROHTAK 9156253131 20
2 RAMESH GURGAON 9562431543 18
7 SOUVIK DUMDUM 9876543210 18

Данная публикация представляет собой перевод статьи « SQL INSERT INTO Statement » , подготовленной дружной командой проекта Интернет-технологии.ру

How can I insert into table with different input using / ,with date datatype?

I’m using oracle 10g.

4 Answers 4

Since dob is DATE data type, you need to convert the literal to DATE using TO_DATE and the proper format model. The syntax is:

Not the answer you’re looking for? Browse other questions tagged sql oracle datetime oracle10g date-formatting or ask your own question.

Related

Hot Network Questions

To subscribe to this RSS feed, copy and paste this URL into your RSS reader.

site design / logo © 2020 Stack Exchange Inc; user contributions licensed under cc by-sa 4.0 with attribution required. rev 2020.1.14.35767


[an error occurred while processing the directive]
Карта сайта