[PHP-users 3333] Re: timestampの日付と時刻の更新

Naofumi Kondoh php-users@php.gr.jp
Tue, 06 Nov 2001 10:42:33 +0900


ソフト工房の近藤です。

HOTTA Michihide wrote:

....略.....

> こちらでは、以下のような感じで正常に動作しています。
> 読んでいる人が追試できるように書いてあげると、解決が早まると
> 思います。

さすが堀田さん。
コピー & ペースト で実行できるサンプルが一番ですね。

ところで、CURRENT_TIMESTAMP は、ANSI SQL92 の関数です
から、空の括弧だとエラーになる場合があると思います。

PostgreSQL 7.0.2 だとエラーになります。

select CURRENT_TIMESTAMP();
Error  SQL : select  CURRENT_TIMESTAMP()
(-403)ERROR:  parser: parse error at or near ")"


select CURRENT_TIMESTAMP(0);
timestamp             
----------------------
2001-11-06 10:26:38+09

select CURRENT_TIMESTAMP;
timestamp             
----------------------
2001-11-06 10:26:12+09

select version();
version                                                      
-------------------------------------------------------------
PostgreSQL 7.0.2 on i686-pc-linux-gnu, compiled by gcc 2.95.2



> drop table t;
> create table t (id text, day timestamp);
> grant all on t to nobody;
> insert into t values ('0001', current_timestamp());
> select * from t;

.........略.......

堀田さんが書いてくださった PHP プログラムも 下記環境で
括弧をとって正常実行できます。三田村さんのところで、
何故うまく動かないのか謎ですね。

PHP/4.0.4pl1 + PostgreSQL 7.0.2 + TLJ 6.0

#!/usr/local/bin/php -q
<?php
    system("grep Linux /etc/issue");
    system("/bin/uname -msr");
    printf("PHP version = %s\n", phpversion());
    $conn = pg_connect("dbname=idb");
    $sql = "update t set day=current_timestamp(0) where id = '0001'";
    pg_exec($conn, $sql);
    $r = pg_exec($conn, "select * from t where id = '0001'");
    printf("day = %s\n", pg_result($r, 0, "day"));
?>


TurboLinux release 6.0 WorkStation (Shiga)
Linux 2.2.13-33 i686
PHP version = 4.0.4pl1
day = 2001-11-06 10:31:37+09


_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
PostgreSQL+PHP ソースコードジェネレーター セミナースライド
          http://www.shonan.ne.jp/~nkon/cslpg.a.semi/
          http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/