Làm cách nào để lấy thời gian từ dấu thời gian trong MySQL?

Giả sử bạn muốn lấy số liệu thống kê theo tháng. Nhóm truy vấn này theo tháng và đếm số lượng khách truy cập (hồ sơ) trong mỗi tháng. Chúng tôi sắp xếp theo kỷ nguyên để nhận được tất cả các kết quả theo đúng thứ tự

SELECT DISTINCT FROM_UNIXTIME(epoch,"%M, %Y") AS month, count(*) as numberOfVisits
FROM mytable
GROUP BY month
ORDER BY epoch

kết quả này

November, 2008   3
December, 2008   1

Có thể dễ dàng thay đổi truy vấn này để lấy số liệu thống kê theo năm, theo ngày, theo ngày trong tuần, theo giờ trong ngày, v.v. Ví dụ: để nhận số liệu thống kê hàng năm, hãy thay đổi truy vấn thành

SELECT DISTINCT FROM_UNIXTIME(epoch,"%Y") AS year, count(*) as numberOfVisits
FROM mytable
GROUP BY year
ORDER BY epoch

Thêm một bản ghi mới vào cơ sở dữ liệu của chúng tôi

Sử dụng hàm UNIX_TIMESTAMP() để chuyển đổi ngày/giờ của MySQL (chẳng hạn như bây giờ() = thời gian hiện tại) thành các kỷ nguyên

INSERT INTO mytable VALUES(1,'pagename',UNIX_TIMESTAMP(now()))

hoặc sử dụng YYYY-MM-DD HH. MM. SS

INSERT INTO mytable VALUES(1,'pagename',UNIX_TIMESTAMP('2008-12-01 12:00:00'))

kỷ nguyên tiêu cực

Có một vấn đề lớn với MySQL. MySQL không thể chuyển đổi dấu thời gian Epoch âm (ngày trước 1-1-1970). Điều này tạo ra các vấn đề ví dụ như ngày sinh. Nhưng có cách giải quyết

Cơ sở dữ liệu của chúng tôi có một bảng tên là travel với dữ liệu trong các cột id, first_name, last_nametimestamp_of_booking

idfirst_namelast_nametimestamp_of_booking1LisaWatson2019-04-20 14. 15. 342TomSmith2019-03-31 20. 10. 143AndyMarkus2019-08-03 10. 05. 454AliceBrown2019-07-01 12. 47. 54

Đối với mỗi khách du lịch, hãy chỉ lấy họ và tên của họ và ngày đặt phòng. (Ghi chú. Cột timestamp_of_booking chứa cả dữ liệu ngày và giờ. )

Giải pháp

Chúng ta sẽ sử dụng hàm DATE(). Đây là truy vấn bạn sẽ viết

SELECT first_name,
       last_name,
       DATE(timestamp_of_booking) 
         AS  date_of_booking
FROM travel;

Đây là kết quả của truy vấn

first_namelast_namedate_of_bookingLisaWatson2019-04-20TomSmith2019-03-31AndyMarkus2019-08-03AliceBrown2019-07-01

Thảo luận

Trong MySQL, sử dụng hàm DATE() để truy xuất ngày từ giá trị ngày giờ hoặc dấu thời gian. Hàm này chỉ nhận một đối số – có thể là biểu thức trả về giá trị ngày/ngày giờ/dấu thời gian hoặc tên của cột dấu thời gian/ngày giờ. (Trong ví dụ của chúng tôi, chúng tôi sử dụng một cột có kiểu dữ liệu dấu thời gian. )

Hàm DATE() chỉ trả về thông tin ngày tháng. Trong ví dụ của chúng tôi, nó trả về ‘2019-03-31’ cho ngày đặt phòng của Tom Smith. Lưu ý rằng thông tin thời gian không được bao gồm

Nếu hai đối số được sử dụng với hàm này, trước tiên, hàm này sẽ cộng biểu thức thứ hai với biểu thức thứ nhất rồi trả về một ngày giờ

cú pháp

TIMESTAMP(expr); TIMESTAMP(expr1,expr2)

Tranh luận

NameDescriptionexprMột giá trị ngày tháng hoặc thời gian. expr1A giá trị ngày hoặc giờ. biểu thức thời gian expr2A

Sơ đồ cú pháp. 1

Làm cách nào để lấy thời gian từ dấu thời gian trong MySQL?

Sơ đồ cú pháp. 2

Làm cách nào để lấy thời gian từ dấu thời gian trong MySQL?

Phiên bản MySQL. 5. 6


Trình chiếu video

Trình duyệt của bạn không hỗ trợ video HTML5

Trình bày bằng hình ảnh

Làm cách nào để lấy thời gian từ dấu thời gian trong MySQL?

Phiên bản MySQL 5. 6

Thí dụ

Câu lệnh MySQL sau đây sẽ trả về một giá trị ngày giờ cho biểu thức ngày đã cho 2009-05-18

Mã số

SELECT TIMESTAMP('2009-05-18');

Đầu ra mẫu

________số 8_______

tập lệnh PHP






example-timestamp-function - php mysql examples | w3resource




Date value for date expression 2009-05-18:

query('SELECT TIMESTAMP("2009-05-18")') as $row) { echo ""; echo ""; echo ""; } ?>
Date expressions
" . $row['TIMESTAMP("2009-05-18")'] . "

Xem ví dụ trong trình duyệt

tập lệnh JSP

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>




example-timestamp-function


<%
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String Host = "jdbc:mysql://localhost:3306/w3resour_bookinfo";
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
connection = DriverManager.getConnection(Host, "root", "datasoft123");
statement = connection.createStatement();
String Data ="SELECT TIMESTAMP('2009-05-18')";
rs = statement.executeQuery(Data);
%>

<%
while (rs.next()) {
%>

<%   }    %>
Date expressions
<%=rs.getString("TIMESTAMP('2009-05-18')")%>
<% rs.close(); statement.close(); connection.close(); } catch (Exception ex) { out.println("Can’t connect to database."); } %>

Thí dụ. Hàm TIMESTAMP() sử dụng datetime

Câu lệnh MySQL sau đây sẽ trả về giá trị ngày giờ sau khi thêm 1. 48. 49 với 2009-05-18 22. 11. 11

Mã số

SELECT TIMESTAMP('2009-05-18 22:11:11','1:48:49');

Đầu ra mẫu

mysql> SELECT TIMESTAMP('2009-05-18 22:11:11','1:48:49');
+--------------------------------------------+
| TIMESTAMP('2009-05-18 22:11:11','1:48:49') |
+--------------------------------------------+
| 2009-05-19 00:00:00                        | 
+--------------------------------------------+
1 row in set (0.00 sec)

Xem ví dụ trong trình duyệt

MySQL Datetime so với Dấu thời gian

Loại DATETIME của MySQL được sử dụng để trả về các giá trị chứa cả phần ngày và giờ. MySQL hiển thị các giá trị DATETIME trong 'YYYY-MM-DD HH. MM. định dạng SS. Phạm vi được hỗ trợ của loại MySQL DATETIME là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59'

Kiểu dữ liệu DẤU THỜI GIAN được sử dụng để trả về giá trị chứa cả phần ngày và giờ. Phạm vi của loại DẤU THỜI GIAN MySQL là '1970-01-01 00. 00. 01' UTC đến '2038-01-19 03. 14. 07' UTC

Các giá trị DẤU THỜI GIAN của MySQL được chuyển đổi từ múi giờ hiện tại sang UTC trong khi lưu trữ và chuyển đổi ngược lại từ UTC sang múi giờ hiện tại khi truy xuất. Múi giờ hiện tại, mặc định cho mỗi kết nối là thời gian của máy chủ. Giả sử bạn đã lưu trữ một giá trị DẤU THỜI GIAN, sau đó thay đổi múi giờ và thử truy xuất giá trị, nó sẽ trả về giá trị khác với giá trị bạn đã lưu trữ trước đó. Điều này xảy ra do múi giờ được sử dụng để chuyển đổi không giống nhau

Nhưng trong trường hợp kiểu dữ liệu DATETIME, giá trị không thay đổi

Các giá trị DATETIME hoặc TIMESTAMP không hợp lệ được chuyển đổi thành giá trị “không” của loại thích hợp ('0000-00-00' hoặc '0000-00-00 00. 00. 00')

Làm cách nào để trích xuất thời gian từ dấu thời gian trong MySQL?

Hàm TIME() trong MySQL được sử dụng để trích xuất phần thời gian từ một biểu thức thời gian/ngày tháng cụ thể. Nếu biểu thức không phải là giá trị thời gian hoặc ngày giờ, hàm TIME sẽ trả về '00. 00. 00′. Nếu biểu thức là NULL, hàm TIME sẽ trả về NULL.

Làm cách nào để lấy thời gian trong MySQL?

Bạn có thể chạy hàm NOW() để lấy ngày giờ hiện tại trong MySQL. Bạn cũng có thể sử dụng current_timestamp() để lấy ngày giờ mới nhất trong MySQL. Nếu bạn chỉ muốn lấy ngày hiện tại trong MySQL, bạn có thể sử dụng biến hệ thống current_date hoặc các hàm như curdate() hoặc current_date()

Làm cách nào để sử dụng dấu thời gian trong truy vấn MySQL?

Khi bảng MySQL được tạo, chỉ cần làm điều này. .
chọn DẤU THỜI GIAN làm loại cột của bạn
đặt giá trị Mặc định thành CURRENT_TIMESTAMP
sau đó chỉ cần chèn bất kỳ hàng nào vào bảng mà không cần chèn bất kỳ giá trị nào cho cột thời gian

Làm cách nào để chọn thời gian từ datetime trong SQL?

Date to Time select cast(getdate() as time(0))
Thời gian để TinyTime select cast(orig_time as time(0))