2009-08-25 32 views
25

Làm cách nào tôi có thể cập nhật thời gian trong trường DateTime đã tồn tại trong MySQL? Tôi muốn ngày ở lại như cũ.Chỉ cập nhật Thời gian trong trường DateTime mysql

+0

Tôi cố gắng này, nhưng không có may mắn: CẬP NHẬT 'Entry' SET entry_period_end_date = ADDTIME (entry_period_end_date, INTERVAL 6 giờ) WHERE TIME (entry_period_end_date) = '06: 00: 00 '; – Martin

Trả lời

1
UPDATE myTable 
SET myDateTime = ADDTIME(myDateTime, @myTimeSpan) 
WHERE id = @id; 

Để biết cú pháp chính xác của hàm, hãy xem this.

+1

Chức năng 'ADDTIME' thêm thời gian vào hiện tại. Điều này có nghĩa là để làm việc này, bạn mong đợi 'myDateTime' chỉ có phần ngày được đặt (và phần thời gian là nửa đêm). – awe

0
UPDATE `table` 
SET time = ADDTIME(time, INTERVAL 13 Hour); 
0

Vâng, chính xác những gì bạn đang yêu cầu là không thể. Các thành phần ngày và thời gian không thể được cập nhật riêng biệt, vì vậy bạn phải tính toán giá trị DateTime mới từ giá trị hiện tại để bạn có thể thay thế toàn bộ giá trị.

+0

Cũng có thể làm điều đó, không cụ thể nhắm mục tiêu phần thời gian của trường datetime, nhưng bạn có thể làm một cái gì đó để có được kết quả mong muốn. – awe

2
UPDATE myTable 
SET myDateTime = ADDTIME(DATE(myDateTime), @myTimeSpan) 
WHERE id = @id; 

dự liệu về chức năng ngày MySQL MySQL docs

+1

Ngày cài đặt = ADDTIME (NGÀY (ngày), '02: 00: 00.999998 ') Đặt ngày thành' 0000-00-00 00:00: ' – NaturalBornCamper

10

Hãy thử điều này:

UPDATE t1 SET DateTimeField = CONCAT(DATE(DateTimeField),' 12:34:56'); 
39

Hãy thử điều này:

UPDATE yourtable SET yourcolumn=concat(date(yourcolumn), ' 21:00:00') WHERE Id=yourid; 
+1

Câu trả lời này hoạt động chính xác như được quảng cáo. –

1

Hãy thử điều này:

UPDATE sms 
SET entry_period_end_date= entry_period_end_date+INTERVAL 6 Hour 
WHERE TIME(entry_period_end_date) = '06:00:00'; 
4

tôi đã giải quyết theo cách này:

UPDATE table 
SET myDateTime = CONCAT_WS(' ',DATE(myDateTime), CURTIME()) 
WHERE id = @id; 

Rõ ràng bạn nên thay đổi CURTIME() với thời gian mong muốn của bạn.

+0

Điều này rất hữu ích, tôi đã tìm kiếm tuyên bố này đôi khi trên mạng. Cảm ơn bạn ! – user1114409

0

trang MySQL DEV cho thấy các chức năng như subtimedifftime

Một mẫu mã để sao lưu thời gian tất cả bài viết nào trong 3 giờ là trên:

UPDATE tablepost SET datepost = SUBTIME(datepost , '0 3:0:0'); 

Lưu ý rằng giá trị 0 không thay đổi lĩnh vực tương ứng. Hãy cẩn thận mã này, sử dụng lựa chọn đầu tiên để kiểm tra các chức năng này.

tham khảo: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_subtime

0

asuming bạn có một trường lĩnh vực DATE và TIME và muốn tiêm thời gian vào ngày, hãy thử này:

UPDATE mytable 
SET mydatefield = ADDTIME(DATE_FORMAT(mydatefield,'%Y-%m-%d 00:00:00'), mydatefield) 
WHERE myid = ... 
Các vấn đề liên quan