Бесплатные структуры данных блокировки собираются иметь проблемы, пока они не изменяют CLR с путаницей, вызванной моделями памяти, см. спецификацию CLI.
программирование без Блокировок является достаточно трудным, что Вы не должны беспокоить им на наборе (контейнер) уровень btw. Верный для любого языка там..
Вы пытаетесь вставить метку времени. Вам нужно связать время с датой. Из документации Postgres :
Допустимый ввод для типов отметок времени состоит из конкатенации даты и время, за которым следует необязательный часовой пояс, за которым следует необязательная AD или до н.э. (В качестве альтернативы AD / BC может появляются перед часовым поясом, но это не является предпочтительным порядком.) Таким образом,
1999-01-08 04:05:06
и
1999-01-08 04:05:06 -8: 00
действительны значения, соответствующие ISO 8601 стандарт.
Do:
$date = '2002-03-11 12:01AM';
Я не понимаю, почему вы получаете эту ошибку, когда значение в кавычках пусто. PostgreSQL определенно принимает даты без времени в полях отметок времени. По умолчанию установлено время «00:00:00», начало этого дня.
CREATE TABLE dates("date" timestamp);
INSERT INTO dates (date) VALUES ('2002-03-11');
SELECT * from dates;
date
---------------------
2002-03-11 00:00:00
Есть несколько вещей, которые вы здесь делаете, но не совсем правильно, и одно из них может улучшить вашу ситуацию. :
Вам действительно следует преобразовать это непосредственно из строки в метку времени, а не полагаться на неявное приведение здесь. Пример в прямом SQL:
INSERT INTO date (date) VALUES (приведение ('2002-03-11' как отметка времени));
«дата» - это зарезервированное слово SQL . Вы не должны называть поля таким образом, потому что вам может потребоваться заключить ссылки на имя в кавычки для их правильного анализа.
Кажется, ваша ошибка ясно указывает, в чем проблема:
ERROR: invalid input syntax for type timestamp: ""
Похоже, ваш запрос пытается вставить пустую строку в поле PostgreSQL, имеющее тип отметка времени. Если вы вставляли некорректную строку какого-либо типа, она должна появиться в полученной ошибке, например:
ERROR: invalid input syntax for type timestamp: "foobardtimestamp"
Или, в вашем случае, если ваша ожидаемая строка передавалась, ваша ошибка может выглядеть следующим образом:
ERROR: invalid input syntax for type timestamp: "2002-03-11"
... но ошибка не говорит о том, что заставляет меня подозревать, что ваша строка на самом деле не передается в запрос, как вы думаете. Дело в том, как указывалось ранее: PostgreSQL должен быть полностью способен обрабатывать 2002-03-11
как действительную строку временной метки.
PostgreSQL не любит вставлять '' (пустую строку) в качестве метки времени и будет жаловаться на указанную вами ошибку.
Если вы хотите указать пустую строку, убедитесь, что у вас ее нет. ограничение NOT NULL
для столбца, и вам нужно использовать null
вместо пустой строки. Если вы не собираетесь отправлять пустую строку, я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести сгенерированный SQL перед тем, как запустить запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: (пустая строка) в качестве метки времени и будет жаловаться на указанную вами ошибку.
Если вы хотите указать пустую строку, убедитесь, что у вас нет ограничения NOT NULL
на столбец, и вам нужно использовать null
вместо пустой строки. Если вы не собираетесь отправлять пустую строку, я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести сгенерированный SQL перед тем, как запустить запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: (пустая строка) в качестве метки времени и будет жаловаться на указанную вами ошибку.
Если вы хотите указать пустую строку, убедитесь, что у вас нет ограничения NOT NULL
на столбец, и вам нужно использовать null
вместо пустой строки. Если вы не собираетесь отправлять пустую строку, я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести сгенерированный SQL перед тем, как запустить запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: вам необходимо убедиться, что у вас нет ограничения NOT NULL
для столбца, и вам нужно использовать null
вместо пустой строки. Если вы не собираетесь отправлять пустую строку, я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести сгенерированный SQL перед тем, как запустить запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: вам нужно убедиться, что у вас нет ограничения NOT NULL
на столбец, и вам нужно использовать null
вместо пустой строки. Если вы не собираетесь отправлять пустую строку, я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести сгенерированный SQL перед тем, как запустить запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: Я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попробовать вывести свой сгенерированный SQL прежде чем вы действительно запустите запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите: Я бы проверил значение $ pdo-> quote ($ date)
, чтобы убедиться, что вы получаете строку, которую хотите вернуть.
Вы также можете попытаться вывести свой сгенерированный SQL прежде чем вы действительно запустите запрос, чтобы убедиться, что он выглядит правильно. У меня такое чувство, что если вы это сделаете, это будет выглядеть примерно так:
INSERT INTO dates(date) VALUES('')
Кроме того, как бы то ни было, ваш пример говорит, что вы бежите:
$ pdo-> query ($ date);
когда я уверен, что вы хотите: $ pdo-> query ($ query);