2012-06-16 36 views
5

Về cơ bản tôi có một mẫu đăng nhập đơn giản. Trong cơ sở dữ liệu Tôi có một cột 'last_logged' và muốn cập nhật nó với ngày hiện tại và thời gian mỗi khi ai đó đăng nhập vàoCách cập nhật ngày SQL bằng cách sử dụng NGAY BÂY GIỜ()

Tôi hiện đang có truy vấn này:.

UPDATE users SET last_logged = "NOW()" WHERE id = 1 

Nhưng nó không cập nhật cột cho ngày hiện tại. Bất kỳ ý tưởng tại sao?

+0

Và bạn không bao giờ có ý tưởng để thử whitout báo giá gấp đôi? –

+5

Tại sao điều này lại bị giảm giá? Đây là một câu hỏi hoàn toàn hợp lý cho một lập trình viên mới bắt đầu. – BeRecursive

Trả lời

16

Xóa dấu ngoặc kép khỏi NOW(). Như một cuộc gọi hàm, nó sẽ không được bỏ phiếu.

UPDATE users SET last_logged = NOW() WHERE id = 1 
+0

Ngoài ra, một số RDMBS sử dụng SYSDATE thay vì NOW(). –

+0

đẹp :) nó hoạt động. một cái gì đó rất đơn giản nhưng đã cho tôi giờ để làm điều đó! cheers mate – CarlTaylor1989

3

MS SQL sử dụng GETDATE() hơn NOW()

(Chỉ cần một FYI)
Trong SQL-Server tôi hiện nay sử dụng SYSDATETIME():

DECLARE @now DATETIME = DATEADD(dd,DATEDIFF(dd,'19000101',SYSDATETIME()),'19000101'); 
+1

Không, chức năng ngày và giờ là cơ sở dữ liệu cụ thể. Có hay không 'now()' là hợp lệ tất cả phụ thuộc vào kiểu cơ sở dữ liệu của chúng (mà chúng không xác định). Tôi nghi ngờ bạn có nghĩa là ** MS SQL ** chứ không phải là SQL. – Leigh

+0

@Ligh Tôi đã có nghĩa là MS SQL-cho những gì nó có giá trị (-1!) Tôi sẽ chỉnh sửa bài viết của tôi – whytheq

+0

Cảm ơn bạn đã sửa chữa nó. Vì một lý do nào đó SO không cho phép tôi đảo ngược -1 và khóa bỏ phiếu của tôi. Bạn có thể thử cập nhật lại bài đăng không? – Leigh

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