2014-04-08 16 views
5

tôi đã sử dụng một phần của một truy vấn để tạo ra một cột bảng cho ngày và thời gian liên tiếp được thêm vào:Làm cách nào để thêm 1 giờ vào dữ liệu cột SQL datetime?

order_date datetime NOT NULL DEFAULT GETDATE()

và bất cứ khi nào một hàng mới được tạo ra, các dữ liệu cho order_date được thiết lập để một cái gì đó như này:

Apr 8 2014 9:52AM

Đối với một số lý do, khi liên tiếp được tạo ra và các dữ liệu order_date cột được thiết lập, giờ được thiết lập 1 giờ trở lại. Ví dụ: dữ liệu cột ở trên cho Apr 8 2014 9:52AM được đặt lúc 10:52 sáng.

Có cách nào để đặt trước 1 giờ để nó chính xác với thời gian hiện tại của tôi không?

Cảm ơn bạn đã được trợ giúp. Tất cả sự giúp đỡ được đánh giá cao.

+3

Kiểm tra thời gian hệ thống trên SQL Server của bạn. Khắc phục điều đó, không phải là triệu chứng. – MatBailie

+0

Múi giờ của máy chủ có thể bị tắt. –

+0

Tôi không thể, bởi vì nó không phải là máy chủ của tôi, do đó tôi không thể thay đổi múi giờ. – Kelsey

Trả lời

4

Bạn nên cân nhắc sử dụng DATETIMEOFFSET làm kiểu tóc của bạn thay vì DATETIME.

Xác định ngày được kết hợp với thời gian trong ngày có thời gian nhận thức vùng và dựa trên đồng hồ 24 giờ.

Bạn có thể sử dụng nó với SYSDATETIMEOFFSET().

Returns a datetimeoffset(7) value that contains the date and time of the computer on which the instance of SQL Server is running. The time zone offset is included. 

Ví dụ:

CREATE TABLE DateTest (id INT, order_date DATETIMEOFFSET NOT NULL DEFAULT SYSDATETIMEOFFSET()) 
INSERT INTO DateTest (id) VALUES (1) 
SELECT * FROM DateTest 
+0

Tôi đang sử dụng 'date_default_timezone_set ('America/Edmonton');' trên trang PHP của tôi vì vậy tôi hy vọng nó sẽ đặt ngày/giờ cho điều đó. Làm cách nào để tôi tạo truy vấn để tạo cột bảng cho loại dữ liệu này? – Kelsey

+0

SQL Server DATETIME không có thông tin múi giờ trong đó vì vậy PHP không thể làm bất cứ điều gì với nó mà không có thêm thông tin. Tôi có thể sẽ không cần thêm thời gian để thêm truy vấn, nhưng về cơ bản nó chỉ giống như sử dụng kiểu khác và hàm khác nhau. –

+0

Câu trả lời rất hay, đây là một phiếu bầu. Tôi sẽ đánh giá cao một cuộc bỏ phiếu về câu hỏi của tôi, nếu có thể. – Kelsey

14

Sử dụng DATEADD()

DATEADD(hh, 1, order_date) 

EDIT:

Nếu thời gian đã được thiết lập một giờ trở lại, bạn có thể có một thời gian hệ thống sai. Vì vậy, sẽ tốt hơn nếu bạn chỉ yêu cầu quản trị viên máy chủ sửa lỗi.

+0

Tôi sẽ sử dụng điều này như thế nào trong truy vấn? (DATEADD (hh, 1, order_date)) – Kelsey

+0

INSERT INTO giá trị tên_bảng (DATEADD (hh, 1, order_date)). Bạn cung cấp phần còn lại của các cột. – Nath

+0

Đây là những gì tôi đang sử dụng ngay bây giờ và dường như không chèn bất kỳ hàng mới nào: '$ sql5 =" INSERT INTO tracking_orders (account_id, order_date) VALUES ('". $ Acc_id."', 'DATEADD (hh , 1, order_date) ') "' – Kelsey

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