(postgreSQL 9.5) вставить в таблицу со столбцом даты, используя странность make_date - PullRequest
0 голосов
/ 20 сентября 2018

Я столкнулся со странностью, комбинируя insert, make_date и case.Я работаю на сервере postgre с версией 9.5.

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

значение - varchar, а дата - дата.

INSERT INTO Table (value, date)
    SELECT othervalue,
         (SELECT MAKE_DATE (
             SELECT MIN(...),
             CASE
                 WHEN 1 THEN 0
                 WHEN 2 THEN 1
             END,1)) FROM OtherTable
    GROUP BY value

Секция SELECT выполняет свою работу правильно (возвращает значение и правильно построенную дату)

EDIT: под этим я подразумеваю, что SELECT othervalue (SELECT Make_Date (..)) работает правильно при запуске.Это когда INSERT INTO (SELECT othervalue, (SELECT Make_Date (..))) вставляет значение, но ноль для даты.

Странно (для меня), что INSERT вставляет NULL для даты.

Что вызывает такое поведение?

Ответы [ 2 ]

0 голосов
/ 21 сентября 2018
INSERT INTO test_tbl (value, date) VALUES (
    (SELECT othervalue FROM OtherTable ORDER BY date LIMIT 1),
    (SELECT
         MAKE_DATE (
             SELECT MIN(...),
             CASE
                 WHEN 1 THEN 0
                 WHEN 2 THEN 1
             END,1) FROM OtherTable
    GROUP BY value))
0 голосов
/ 21 сентября 2018

Может быть, это будет работать

INSERT INTO Table (value, date)
SELECT value,
     MAKE_DATE (
         SELECT MIN(...),
         CASE
             WHEN 1 THEN 0
             WHEN 2 THEN 1
         END,1)::timestamp FROM OtherTable
GROUP BY value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...