2011-08-09 44 views
16

Tôi có một trường mà khi có thứ gì đó được chèn vào, tôi muốn nó có được Ngày & hiện tại và chèn nó vào cơ sở dữ liệu. Có cách nào để có được ngày & thời gian và đặt nó làm giá trị mặc định không?Dấu thời gian ngày mặc định của SQL Server?

Hiện tại giá trị mặc định là: (getdate()) Chỉ đặt ngày. Làm thế nào để tôi cũng đặt thời gian?

+0

Bạn cần chỉ định việc triển khai SQL nào bạn sử dụng ... – JNK

+1

@JNK: bạn đã tạo macro cho điều này chưa? – VoodooChild

+1

@voodoo chưa nhưng tôi đang đóng – JNK

Trả lời

26

GETDATE() là ngày và giờ trong SQL Server.

Chạy SELECT GETDATE() để xác minh điều này.

Kiểu dữ liệu của trường của bạn là gì? Nếu đó là DATE thì nó cũng sẽ không giữ giá trị thời gian.

+1

+1: GetDate cũng nhận được dấu thời gian! – VoodooChild

+0

Nếu bạn không muốn sử dụng thời gian hiện tại thì sao? – Amicable

+0

Câu hỏi đặt ra là trả về ngày giờ hiện tại. Bạn muốn chính xác những gì/ – JNK

2

SYSDATETIME() sẽ nhận ngày giờ hiện tại.

Đảm bảo loại dữ liệu của cột là datetime và không chỉ date hoặc không thể giữ ngày giờ.

0

Hầu hết các triển khai SQL (động cơ) đều có chức năng CURRENT_TIMESTAMP.

4

Một cách dễ dàng là để cung cấp cho lĩnh vực này là một hạn chế mặc định:

create table YourTable 
    (
    ... other columns ... 
    CreateDt datetime default getdate(), 
    ... other columns ... 
    ) 

Một nhược điểm của phương pháp này là bạn có thể ghi đè lên giá trị bằng cách xác định nó trong một khoản insert.

3

Cá nhân tôi muốn sử dụng GETUTCDATE() thay vì GETDATE() để tránh nhầm lẫn.

+2

Tôi cũng khuyên bạn nên làm như vậy. Rất khó để thoát khỏi giờ địa phương nếu bạn sử dụng nó. –

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