Объединить два значения при вставке - SQL - PullRequest
2 голосов
/ 02 марта 2012

Я пытаюсь выполнить то, что кажется чем-то простым, но я не могу найти решение - возможно, я неправильно его формулирую.

У меня есть стороннее программное обеспечение, которое выводит дату и время в виде двух отдельных значений, одно для даты и другое для времени, и мне нужно иметь возможность INSERT эти данные как одно поле datetime в SQL.

Стороннее программное обеспечение построено на проприетарном языке на основе .NET и использует SQL Server 2005.

Вот мои два значения в программном обеспечении:

let cbdate1 = cbdate
let cbtime1 = cbhr & ":" & cbmn & ":00 " & ampm

И тогда SQL будет выглядеть так:

DOSQL "INSERT INTO Leads (DateTimeField) VALUES (cbdate1 + ' ' + cbtime1)"

Итак, по сути, я пытаюсь объединить два значения при вставке в таблицу. Это не работает, и я не могу заставить себя найти подходящий ответ.

Дополнительная информация:

Дата (cbdate1) представлена ​​как «ММ / ДД / ГГГГ», а время просто объединяется, как представлено «ЧЧ: ММ: 00 AM»

Ответы [ 3 ]

6 голосов
/ 02 марта 2012

В настоящее время вы используете двойные кавычки, вместо этого вы должны использовать одинарные кавычки, поскольку это допустимая строка в SQL.

 DOSQL "INSERT INTO Leads (DateTimeField) VALUES (cbdate1 + ' ' + cbtime1)"

Edit:

Теперь, если у вас возникнут дополнительные проблемы, это может быть из-за того, что ваш DateTimeField имеет тип данных datetime. Теперь вы можете затем после объединения преобразовать или привести строку в правильный формат .

Как:

 DOSQL "INSERT INTO Leads (DateTimeField) VALUES (Convert(datetime, cbdate1 + ' ' + cbtime1))"

Редактировать # 2:

Без 24-часовой части вам потребуется формат mon dd yyyy, например: 22 октября 2012 года. В противном случае вам, возможно, придется попытаться перевести временную часть в 24-часовой формат.

0 голосов
/ 02 марта 2012

Что вам нужно сделать, это объединить строки, а затем привести их к типу datetime.Убедитесь, что строки в правильном формате.(т.е. 01-01-01, 01/01/01 и т. д.)

INSERT INTO LEADS (DateTimeField) VALUES (CAST((cbdate1 + ' ' + cbtime1) as datetime)

Обратитесь к MSDN для форматов вывода в зависимости от того, что вы хотите.

http://msdn.microsoft.com/en-us/library/aa226054(v=sql.80).aspx

0 голосов
/ 02 марта 2012

Сначала объедините значения даты и времени в исходном коде, а затем вставьте одно значение в базу данных. Вы не говорите, какой язык программирования вы используете, поэтому я не могу сказать вам, как это сделать. Однако это легко сделать в VB6 и на любом языке .NET.

...