![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Формат даты в SQL [D6, MSSQL]
Serg De © (2003-08-26 15:54:00)
Здравствуйте!
Возникла проблема. И что-то никак не пойму в чем дело. Необходимо занести значение текстовой переменной в поле DateTime базы SQL. SQL-запрос: INSERT INTO DATABASE DATE VALUES :DATEQ. Значение текста: S="12.08.2003". Делаю Query1.ParamByName("DATEQ").AsDate:=StrToDate(S). При ExecSQL выдает Invalid Date format. Пробовал VALUES :"DATEQ" и VALUES :"DATEQ", пробовал перед INSERT SET DATEFORMAT "dmy" ставить - не помогает. Где ошибка???
Заранее благодарен.
stud (2003-08-27 09:38:00) [1]
можно еще так:
query1.Params.Items[0].DataType:=ftDate;
query1.ParamByName("dateq").Value:=
Serg De (2003-08-26 17:41:00) [2]
ZrenBy
Спасибо... В принципе получилось немного сложнее, чем хотелось бы, но работает :)
ZrenBy (2003-08-26 16:39:00) [3]
MSSQL Server - это вам не <подставьте нужное>
CREATE TABLE [dbo].[TBL_DATE] (
[A] [datetime] NOT NULL
) ON [PRIMARY]
GO
declare @D char(8)
set @D = "20030812" -- это строка
insert into TBL_DATE (A)values(@D)
GO
select * from TBL_DATE
Serg De (2003-08-26 16:34:00) [4]
ZrenBy
В том-то и дело, что параметр должен быть датой, т.к. поле в базе типа datetime и храниться значение должно как Date, а не как String.
ZrenBy (2003-08-26 16:10:00) [5]
Параметр сделай текстовым
Query1.ParamByName("DATEQ").AsString:=FormatDateTime("yyyymmdd",StrToD ate(S))
Serg De (2003-08-26 16:07:00) [6]
Попробовал. Делфа пишет,что это "not valid date".
Miau (2003-08-26 16:04:00) [7]
Не знаю, в чём ошибка, но попробуй такой запрос:
Query1.SQL.TEXT:=
"INSERT INTO [DATABASE] ([DATE]) VALUES (CAST("""+s+""" as datetime))"
ZrenBy (2003-08-26 16:01:00) [8]
Передавай в формате ISO - 20030812
Это формат, который интерпретируется однозначно