2014-10-22 11 views
5

Tôi chỉ cố gắng để thêm 1 giờ để một giá trị, nó là loại phức tạp trên ở đâu và tại sao tôi đang làm điều này nhưng về cơ bản tôi chỉ cần để truy vấn một cái gì đó như thế nàyOracle Thêm 1 giờ trong SQL

select DATE_ADD(hh,1,'2014-10-15 03:30:00 pm') from dual 

Tôi tiếp tục đọc các bài viết cũ cho biết sử dụng dateAdd hoặc date_add nhưng tôi vẫn gặp phải lỗi định danh không hợp lệ.

Trả lời

14
select sysdate + 1/24 from dual; 

sysdate là một hàm không có đối số trả về kiểu NGÀY
+ 1/24 thêm 1 giờ để một ngày

select to_char(to_date('2014-10-15 03:30:00 pm', 'YYYY-MM-DD HH:MI:SS pm') + 1/24, 'YYYY-MM-DD HH:MI:SS pm') from dual; 
+0

Tôi không muốn sysdate tôi có giá trị tĩnh mà tôi nhận được từ một truy vấn khác mà tôi cần thêm 1 giờ vào nó. chọn ('2014-10-15 03:30:00 pm' + 1/24) từ kép; cung cấp cho tôi số không hợp lệ – Travis

+0

@Travis Cập nhật câu trả lời – Multisync

+0

CẢM ƠN BẠN! Tôi sẽ chấp nhận câu trả lời ngay sau khi nó cho phép tôi – Travis

5

Sử dụng một khoảng thời gian:

select some_date_column + interval '1' hour 
from your_table; 
+0

Cẩn thận rằng 'interval' mong đợi một chuỗi và sẽ không tự động đúc. Điều này có thể dẫn đến các sự cố nếu bạn sử dụng câu lệnh đã chuẩn bị: 'some_date_column + interval: hour_count hour' sẽ ném * ORA-00923: TỪ từ khóa không tìm thấy ở vị trí mong đợi *. –

+2

@ ÁlvaroG.Vicario: bạn có thể làm được điều đó bằng cách sử dụng một cái gì đó như thế này: 'some_date_column + (interval '1' hour *: hour_count)' –

3

Bạn có thể sử dụng loại INTERVAL hoặc chỉ cần thêm giá trị số được tính - "1" bằng nhau "1 ngày".

Cách thứ nhất:

select date_column + INTERVAL '0 01:00:00' DAY TO SECOND from dual; 

Cách thứ hai:

select date_column + 1/24 from dual; 

cách đầu tiên là thuận tiện hơn khi bạn cần phải thêm một giá trị phức tạp - ví dụ, "1 ngày 3 giờ 25 phút 49 giây ". Xem thêm: http://www.oracle-base.com/articles/misc/oracle-dates-timestamps-and-intervals.php

Ngoài ra, bạn phải nhớ rằng oracle có hai loại khoảng thời gian - DAY TO SECOND và NĂM ​​TO MONTH. Đối với tôi, một loại khoảng sẽ tốt hơn, nhưng tôi hy vọng mọi người trong oracle biết, những gì họ làm;)

1

Việc tính toán rất đơn giản

nếu bạn muốn thêm 1 giờ trong ngày.

mỗi ngày có 24 giờ, bạn có thể thêm.

select sysdate + 1/24 from dual; 

nếu bạn muốn 1 ngày để thêm

select sysdate + 24/24 from dual; 

or 

select sysdate + 1 from dual; 

same as for 2, 3 , 4 day 

Đối ngày tĩnh bạn có câu trả lời dưới đây.

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