(postgreSQL 9.5)使用make_date奇数插入带有日期列的表

时间:2018-09-20 16:04:13

标签: postgresql

我在组合insert,make_date和case时遇到了一个奇怪的问题。我正在使用9.5版的Postgre服务器。

这是我的代码的抽象版本:

值是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部分​​正确执行其工作(返回值和正确构造的日期)

编辑:我的意思是,SELECT othervalue(SELECT Make_Date(..))在运行时可以正常工作。就是在INSERT INTO(SELECT othervalue,(SELECT Make_Date(..)))插入值时,但日期为null的时候。

对我来说奇怪的是INSERT为日期插入NULL。

是什么原因导致这种行为?

2 个答案:

答案 0 :(得分:0)

也许会起作用

junit-platfrom-xyz

答案 1 :(得分:0)

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))