2009-08-23 61 views
33

Có cách nào trong MySQL để tạo DATETIME từ một thuộc tính đã cho loại DATE và thuộc tính đã cho của loại TIME không?Tạo DATETIME từ DATE và TIME

+0

Nhưng tại sao bạn lại làm như vậy? –

Trả lời

17
datetime = CONCAT(date, ' ', time); 
+9

Lưu ý rằng 'CONCAT()' trả về một chuỗi, không có giá trị * true * 'DATETIME'. – CDuv

+0

CONCAT kém - nếu thời gian là> 24 giờ thì sao? – kbro

32

Để có được một sự thật giá trị DATETIME từ bạn hai riêng biệt DATETIME giá trị:

STR_TO_DATE(CONCAT(date, ' ', time), '%Y-%m-%d %H:%i:%s') 
+0

Múi giờ với nỗ lực này là gì? – Muki

+4

Tôi đoán nó sẽ là tập hợp trong biến hệ thống ['time_zone'] (http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html#sysvar_time_zone). 'DATETIME' loại không lưu trữ múi giờ. – CDuv

+0

CONCAT kém - sử dụng các hàm ngày giờ cho thao tác datetime và các hàm chuỗi cho thao tác chuỗi. – kbro

0

Nếu không có việc tạo ra và phân tích chuỗi, chỉ cần thêm một khoảng thời gian đến ngày:

set @dt_text = '1964-05-13 15:34:05.757' ; 
set @d = date(@dt_text) ; 
set @t = time(@dt_text) ; 
select @d, @t, @d + interval time_to_sec(@t) second; 

Tuy nhiên điều này cắt ngắn micro giây.

Tôi đồng ý với Muki - hãy đảm bảo tính đến múi giờ và thời gian tiết kiệm ánh sáng ban ngày!

6

Bạn có thể sử dụng ADDTIME():

ADDTIME(CONVERT(date, DATETIME), time) 
  • date có thể là một chuỗi ngày hoặc một đối tượng DATE.
  • time có thể là chuỗi thời gian hoặc đối tượng TIME.

Đã kiểm tra trong MySQL 5.5.

24

được sao chép từ các tài liệu MySQL:

TIMESTAMP(expr), TIMESTAMP(expr1,expr2)

Với một đối số duy nhất, chức năng này sẽ trả về biểu thức ngày hoặc datetime expr là một giá trị datetime. Với hai đối số, nó thêm biểu thức thời gian expr2 vào ngày hoặc biểu thức ngày giờ expr1 và trả về kết quả dưới dạng giá trị ngày giờ.

mysql> SELECT TIMESTAMP('2003-12-31'); 
    -> '2003-12-31 00:00:00' 
mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00'); 
    -> '2004-01-01 00:00:00' 
+4

Đây phải là câu trả lời được chấp nhận. –

+0

Có, đây phải là câu trả lời được chấp nhận. – kbro

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