2010-05-12 41 views
7

Tôi có giá trị thời gian 04:30:25 mà tôi muốn chuyển đổi thành giây. Có chức năng chuyên dụng nào để thực hiện việc này không?Chuyển đổi thời gian thành giây trong PostgreSQL

Tôi biết rằng chúng tôi có thể trích xuất giờ, phút và giây, sau đó tính số giây.

SELECT EXTRACT(hour FROM t)*60*60 
     + EXTRACT(minutes FROM t)*60 
     + EXTRACT(seconds FROM t) 
    FROM test; 

Nhưng tôi muốn một số cách khác ...

Trả lời

3

Có lẽ bạn có thể làm cho nó trở thành một chức năng (chỉ cần thiết lập nhanh, vui lòng xem lại và thay đổi khi cần)?

CREATE OR REPLACE FUNCTION to_seconds(t text) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    hs INTEGER; 
    ms INTEGER; 
    s INTEGER; 
BEGIN 
    SELECT (EXTRACT(HOUR FROM t::time) * 60*60) INTO hs; 
    SELECT (EXTRACT (MINUTES FROM t::time) * 60) INTO ms; 
    SELECT (EXTRACT (SECONDS from t::time)) INTO s; 
    SELECT (hs + ms + s) INTO s; 
    RETURN s; 
END; 
$BODY$ 
    LANGUAGE 'plpgsql'; 

Sau đó chỉ cần sử dụng nó trong các truy vấn của bạn:

SELECT to_seconds('04:30:25'); 

Returns:

16225 
22

Bạn đã cố gắng sử dụng:

SELECT EXTRACT(EPOCH FROM INTERVAL '04:30:25'); 

Nếu điều đó không làm việc, bạn có thể cố gắng để tiền tố giá trị thời gian của bạn với '1970- 01-01 'và thử:

SELECT EXTRACT(EPOCH FROM TIMESTAMP '1970-01-01 04:30:25'); 

Không được kiểm tra nhưng có vẻ như đây là những lựa chọn duy nhất của bạn. Có lẽ.

7

Bạn có thể bỏ qua kỷ nguyên hoặc khoảng thời gian, ví dụ:

SELECT EXTRACT(EPOCH FROM column) from table 
+0

Tôi đã sử dụng 'FLOOR (EXTRACT (EPOCH FROM column))' để làm tròn và nhận số nguyên – Josh

0

Nếu bạn muốn để mô phỏngcủa MySQL 0 chức năng, bạn có thể sử dụng một chức năng như thế này:

CREATE OR REPLACE FUNCTION time_to_sec(t text) 
    RETURNS integer AS 
$BODY$ 
DECLARE 
    s INTEGER; 
BEGIN 
    SELECT (EXTRACT (EPOCH FROM t::interval)) INTO s; 
    RETURN s; 
END; 
$BODY$ 
    LANGUAGE 'plpgsql'; 

Nó có ưu điểm là nó sẽ làm việc với khoảng PostgreSQL (ví dụ: hơn thời gian 24 giờ), trong đó sẽ phá vỡ to_seconds chức năng trong câu trả lời được chấp nhận .

Các vấn đề liên quan