从NOW()中删除TIMESTAMP精度导致PostgreSQL?

时间:2012-08-21 18:05:40

标签: sql postgresql datetime timestamp

有没有办法从PostgreSQL中的NOW()函数的结果中删除精度?

"2012-08-21 10:23:34.867502"

我正在寻找格式:

"2012-08-21 10:23:34"

我正在尝试使用以下SQL更新“没有时区的时间戳”类型的列:

UPDATE table SET column = now();

谢谢!

5 个答案:

答案 0 :(得分:16)

简单的答案是将其转换为零精度。

select now()::timestamptz(0);

答案 1 :(得分:11)

UPDATE tbl SET col = DATE_TRUNC('second', NOW());

请参阅DATE_TRUNC的文档。

答案 2 :(得分:2)

您可以在pgAdmin 3中将列的长度移动到0,或者如果使用 timestamp(0)创建表格,则可以更改表格的结构:

<!DOCTYPE html>
<!--[if lt IE 7]>      <html lang="en" ng-app="ngSocial" class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html lang="en" ng-app="ngSocial" class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html lang="en" ng-app="ngSocial" class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html lang="en" ng-app="ngSocial" class="no-js"> <!--<![endif]-->
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <title>NgSocial App</title>
  <meta name="description" content="">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="bower_components/bootstrap/dist/css/bootstrap.min.css">
  <link rel="stylesheet" href="app.css">
</head>
<body>
  <nav class="navbar navbar-inverse">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="#">ngSocial</a>
        </div> 
      </div>
    </nav>

  <!--[if lt IE 7]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
  <![endif]-->

  <div class="container">
    <div ng-view></div>
      <div class="row">

      </div>
  </div>


  <!-- In production use:
  <script src="//ajax.googleapis.com/ajax/libs/angularjs/x.x.x/angular.min.js"></script>
  -->
  <script src="bower_components/angular/angular.js"></script>
  <script src="bower_components/angular-route/angular-route.js"></script>
  <script src="bower_components/ng-facebook/ngFacebook.js"></script>
  <script src="app.js"></script>
  <script src="view1/view1.js"></script>
  <script src="view2/view2.js"></script>
  <script src="facebook/facebook.js"></script>
</body>
</html>

但是如果你这样做,如果你试图插入一个毫秒的时间戳,就会出现错误。

答案 3 :(得分:0)

根据您的要求,另一个选项是调整timestamp列本身的精度 - 将其精度设置为0.当将PostgreSQL与不处理时间戳中的小数秒的旧程序一起使用时,这非常有用。 / p>

答案 4 :(得分:0)

  "error": {
    "code": "ErrorAccessDenied",
    "message": "AccessDeniedException",

在上一个答案中选择 select now()::timestamp(0); 仍然保留时区。