PostgreSQLで行いました。タイトルの通り、テーブルの最も新しい更新日時か、テーブルが空の場合には指定した値を返します。
SELECT
updated_at
FROM (
(
SELECT updated_at
FROM sample_table
ORDER BY updated_at DESC
LIMIT 1
)
UNION
SELECT '1970-01-01 00:00:00' AS updated_at
) AS sample
ORDER BY updated_at DESC
LIMIT 1
;
これでできます。
例えば
CREATE TABLE sample_table (
id SERIAL NOT NULL,
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL
);
この構造の空テーブルがあるときに実行すると
updated_at
---------------------
1970-01-01 00:00:00
(1 row)
こうなります。
INSERT INTO sample_table (updated_at, created_at) VALUES (NOW(), NOW());
適当に挿入した後に実行すると
updated_at
----------------------------
2014-04-03 15:07:44.447706
(1 row)
こうなります。
0 件のコメント:
コメントを投稿