Tôi không thể tìm ra (googling, đọc hướng dẫn tham khảo mysql) cách lấy giá trị DATETIME trong giây trong MySQL.MYSQL - datetime to seconds
Tôi không có nghĩa là trích xuất giây từ ngày giờ, nhưng để chuyển đổi giây thành giờ.
Tôi không thể tìm ra (googling, đọc hướng dẫn tham khảo mysql) cách lấy giá trị DATETIME trong giây trong MySQL.MYSQL - datetime to seconds
Tôi không có nghĩa là trích xuất giây từ ngày giờ, nhưng để chuyển đổi giây thành giờ.
Nếu bạn muốn có sự khác biệt giữa các giá trị DATETIME, sử dụng TIMESTAMPDIFF
:
TIMESTAMPDIFF (đơn vị, datetime_expr1, datetime_expr2)
Returns
datetime_expr2 – datetime_expr1
, nơidatetime_expr1
vàdatetime_expr2
là ngày hay datetime biểu thức. Một biểu thức có thể là một ngày và một biểu thức khác là ngày giờ; một giá trị ngày được coi là một ngày giờ có phần thời gian '00: 00: 00 'khi cần thiết. Đơn vị cho kết quả (một số nguyên) được đưa ra bởi đối số đơn vị. Các giá trị pháp lý cho đơn vị giống với các giá trị được liệt kê trong phần mô tả của hàmTIMESTAMPADD()
.
mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');
-> 3
mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');
-> -1
mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');
-> 128885
unit
cũng có thể là HOUR
đó là những gì bạn yêu cầu một trong các ý kiến.
Nếu bởi "chuyển sang giây", bạn có nghĩa là "chuyển đổi sang một UNIX Timestamp" (tức là số giây kể từ 1970-01-01
), sau đó bạn có thể sử dụng UNIX_TIMESTAMP
chức năng:
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
Và, vì mục đích hoàn thành, để chuyển đổi từ Dấu thời gian Unix thành ngày giờ, bạn có thể sử dụng hàm FROM_UNIXTIME
.
tốt và khi tôi muốn sự khác biệt giữa hai giờ trong HOURS, tôi có nên sử dụng một cái gì đó như thế nào? : chọn (unix_timestamp ('2010-01-02 18:00:00') - unix_timestamp ('2010-01-01 16:00:00'))/60/60; – Mike
Tôi cho rằng hàm TIMESTAMPDIFF nên thực hiện thủ thuật: nó cho phép một hàm xác định đơn vị mong muốn (xem http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff) –
cảm ơn bạn, Felix đã đề nghị sử dụng timesteampdiff, đó là những gì tôi muốn – Mike
Hàm UNIX_TIMESTAMP (datetime) trả về thời gian unix, xảy ra là số giây kể từ 1-Jan-1970 0000 UTC. Đó có thể là những gì bạn cần, nhưng không phải nếu bạn đang làm việc với ngày tháng năm sinh, ngày tháng lịch sử, hoặc ngày sau 2037.
tôi được sử dụng trong mysql
TO_SECONDS (ngày bạn đặt tại đây) phương pháp
để chuyển đổi ngày đến giây từ năm 0http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Bắt đầu từ mysql 5.5.0 bạn có thể sử dụng to_seconds()
TO_SECONDS(FIELD_NAME)
FIELD_NAME phải DATETIME
loại
Sử dụng TIME_TO_SEC trong các phiên bản trước đó cho mysql
CHỌN TIME_TO_SEC (thời gian tên_cột) FROM tên_bảng
Tôi đã tạo ra truy vấn của riêng tôi cho vấn đề của bạn:
select (hour(*colname*)*3600 + minute(*colname*)*60 + second(*colname*))
from widgets
where id=1;
id=1
nếu bạn phải thực hiện một hàng cụ thể.Câu hỏi đã được trả lời một thời gian dài trước đây, và câu trả lời được chấp nhận cũng đề cập đến những ngày, không chỉ là giờ và phút. OP làm rõ trong một nhận xét rằng ông muốn tính toán sự khác biệt giữa hai thời gian biểu trong giờ. –
Xin lỗi, nhưng tôi hỏi về toàn bộ DATETIME: ( – Mike
@ Mike: Xem câu trả lời cập nhật của tôi –
ngọt ngào :) Tôi đánh dấu câu trả lời của bạn là câu trả lời chính xác :) cảm ơn bạn – Mike