将时间戳存储为hstore中的默认值

时间:2014-03-21 17:35:11

标签: postgresql hstore

我正在尝试将当前时间戳存储为hstore中的默认值。我尝试使用now(),但所有存储的都是"last_collected"=>"now()"。这就是我所拥有的:

'"level"=>"1", "last_collected"=>now()'::hstore

是否有正确的方法可以做到这一点,还是可能?谢谢!

1 个答案:

答案 0 :(得分:3)

使用其中一个hstore constructor functions可能会更容易:

  

hstore(text[]):从数组构造一个hstore,它可以是一个键/值数组,也可以是一个二维数组。
  hstore(text[], text[]):从单独的键和值数组构造一个hstore。

所以你可以使用其中一个:

hstore(array['level', '1', 'last_collected', now()::text])
hstore(array[array['level', '1'], array['last_collected', now()::text]])
hstore(array['level', 'last_collected'], array['1', now()::text])

请记住,hstore对密钥和值使用text,因此您的时间戳将是一个字符串。您可能希望使用to_char而不是::text将时间戳转换为字符串,这样可以更好地控制精度和格式。

hstore(ARRAY['level', '1', 'last_collected', to_char(CURRENT_TIMESTAMP, 'HH12:MI:SS')]);