如何为新插入的行插入current_timestamp

时间:2019-01-07 05:36:56

标签: postgresql-9.5

我需要每天三次插入带有时间戳的数据。我需要在时间列的空值中插入current_timestamp

update tablename 
  set time = CURRENT_TIMESTAMP 
WHERE time = null
 name   | marks |            time
 ---------+-------+----------------------------
 GANESH  |    80 | 2019-01-06 05:03:24.171124
 GANESH  |    90 | 2019-01-06 05:03:24.171124
 GANESH  |   100 | 2019-01-06 05:03:24.171124
 SURESH  |    10 | 2019-01-06 05:03:24.171124
 SURESH  |    20 | 2019-01-06 05:03:24.171124
 SURESH  |    30 | 2019-01-06 05:03:24.171124
 RAKESH  |    90 | 2019-01-06 05:03:24.171124
 Vishnu  |   900 | 2019-01-06 05:03:24.171124
 VITAL   |   100 | 2019-01-06 05:03:24.171124
 SEENU   |   100 | 2019-01-06 05:03:24.171124
 VITAL1  |   100 |
 VITAL12 |   100 |
 VITAL13 |   100 |
 raj     |       |
 raj1    |       |
 raj2    |       |

我希望将current_timestamp插入空位置

  name   | marks |            time
    ---------+-------+----------------------------
     GANESH  |    80 | 2019-01-06 05:03:24.171124
     GANESH  |    90 | 2019-01-06 05:03:24.171124
     GANESH  |   100 | 2019-01-06 05:03:24.171124
     SURESH  |    10 | 2019-01-06 05:03:24.171124
     SURESH  |    20 | 2019-01-06 05:03:24.171124
     SURESH  |    30 | 2019-01-06 05:03:24.171124
     RAKESH  |    90 | 2019-01-06 05:03:24.171124
     Vishnu  |   900 | 2019-01-06 05:03:24.171124
     VITAL   |   100 | 2019-01-06 05:03:24.171124
     SEENU   |   100 | 2019-01-06 05:03:24.171124
     VITAL1  |   100 | 2019-01-07 11:03:24.171124
     VITAL12 |   100 | 2019-01-07 11:03:24.171124
     VITAL13 |   100 | 2019-01-07 11:03:24.171124
     raj     |       | 2019-01-07 11:03:24.171124
     raj1    |       | 2019-01-07 11:03:24.171124
     raj2    |       |2019-01-07 11:03:24.171124

1 个答案:

答案 0 :(得分:0)

如果要将列与NULL进行比较,则需要使用IS NULLIS NOT NULL运算符。因此,以下方法应该起作用:

UPDATE tablename
SET time = CURRENT_TIMESTAMP
WHERE time IS NULL;

这个问题几乎是一个错字问题,只是理解NULL在SQL中的语义含义不仅仅是错字问题。 NULL值本身的意思是“未知”,因此使用=进行检查是没有意义的。