MySQL lấy ngày từ dấu thời gian

Hướng dẫn toàn diện này cung cấp cú pháp và ví dụ về các hàm Dấu thời gian và Định dạng ngày của MySQL như ngày hiện tại, thêm ngày, thêm thời gian, v.v.

Trong hướng dẫn này, chúng ta sẽ tìm hiểu sâu về các kiểu dữ liệu Ngày và Giờ của MySQL và các hàm khác nhau do MySQL cung cấp để thao tác các giá trị ngày và giờ

MySQL cung cấp một bộ chức năng/tiện ích tuyệt vời để thực hiện các hoạt động khác nhau như cộng và trừ ngày, tìm ra sự khác biệt giữa 2 ngày và trích xuất các phần cụ thể của giá trị ngày-giờ đã cho

=> Nhấp vào đây để xem toàn bộ loạt bài hướng dẫn về MySQL

MySQL lấy ngày từ dấu thời gian

Bạn sẽ học được gì

Các hàm định dạng ngày và thời gian của MySQL

Các hàm này rất quan trọng bất cứ khi nào cần có bất kỳ thao tác nào trên giá trị cột ngày giờ trong bảng MySQL

Điều kiện tiên quyết

Để chạy các ví dụ được sử dụng trong hướng dẫn, bạn sẽ cần thiết lập cài đặt MySQL cục bộ

=>> Để cài đặt MySQL, hãy tham khảo hướng dẫn của chúng tôi tại đây

NGÀY VÀ GIỜ Kiểu dữ liệu

Các loại dữ liệu bao gồm NĂM, NGÀY, GIỜ, DATETIME và DẤU THỜI GIAN

MySQL lưu trữ các giá trị ngày và giờ bằng cách sử dụng 5 loại dữ liệu khác nhau. e. – NĂM, NGÀY, GIỜ, NGÀY GIỜ và DẤU THỜI GIAN. Hãy cố gắng hiểu những điều này một cách ngắn gọn trong bảng bên dưới, trước khi tìm hiểu sâu hơn về ĐỊNH DẠNG NGÀY và CHỨC NĂNG GIỜ NGÀY do MySQL cung cấp

TypeSyntaxRangeMemoryFormatYEARĐược sử dụng để chỉ lưu trữ phần năm
colName YEAR1901 - 21551‘YYYY’DATEĐược sử dụng để chỉ lưu phần NGÀY
colName DATE'1000-01-01' to '9999-12-31'3‘YYYY-MM-DD’TIMEĐược sử dụng để chỉ lưu phần TIME
colName THỜI GIAN
colName TIME(n)
n -> độ chính xác hoặc thành phần phân số'00. 00. 00' đến '23. 59. 59'3 + lưu trữ phân đoạn'hh. mm. ss. [phân số]'DATETIMEĐược sử dụng để lưu trữ cả NGÀY và GIỜ
colName DATETIME
colName DATETIME(n)
n -> độ chính xác hoặc thành phần phân số'1000-01-01 00. 00. 00. 000000' đến '9999-12-31 23. 59. 59. 999999'5 + lưu trữ phân đoạn‘YYYY-MM-DD hh. mm. ss. [phân số]'DẤU THỜI GIANĐược sử dụng để lưu trữ cả NGÀY và GIỜ
colName DẤU THỜI GIAN
colName DẤU THỜI GIAN(n)
n -> độ chính xác hoặc thành phần phân số'1970-01-01 00. 00. 01' UTC đến '2038-01-19 03. 14. 07' UTC. 4 + lưu trữ phân đoạn‘YYYY-MM-DD hh. mm. ss. [phân số]’

Bây giờ chúng ta sẽ hiểu các yêu cầu về bộ nhớ đối với lưu trữ phân đoạn. Đối với các loại dữ liệu TIME, DATETIME và TIMESTAMP tùy thuộc vào thành phần phân số được chỉ định, bộ nhớ tiêu thụ sẽ khác nhau

Số chữ số phân sốBộ nhớ (tính bằng byte)001-213-425-63

Sử dụng bảng trên, ví dụ, nếu chúng ta có một loại cột là – TIME(5)

Sau đó, tổng bộ nhớ được sử dụng sẽ là => bộ nhớ được sử dụng bởi kiểu dữ liệu TIME + bộ nhớ được sử dụng bởi 5 thành phần phân số => 3 + 3 => 6 byte

Hãy minh họa tất cả các loại dữ liệu này như một phần của một bảng và xem các giá trị được gán cho từng loại

CREATE TABLE datetime_illustration(year_col YEAR, date_col DATE, time_col TIME, 
time_col_fractional TIME(2), datetime_col DATETIME, datetime_col_fractional DATETIME(6), 
timestamp_col TIMESTAMP, timestamp_col_fractional TIMESTAMP(6)) 

Chèn một hàng vào bảng bằng hàm 'now()', là dấu thời gian hiện tại. Lưu ý cách sử dụng chức năng này sẽ dẫn đến việc cắt/chèn chỉ phần bắt buộc của ngày và giờ hiện tại, tùy thuộc vào kiểu dữ liệu của cột

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration

Bây giờ, hãy xem nội dung của bảng để phân tích dữ liệu trong các cột khác nhau

select * from datetime_illustration

MySQL lấy ngày từ dấu thời gian

Vì vậy, chúng tôi tóm tắt các dữ liệu trên là,

  • Tất cả các cột đều được gán giá trị cho mỗi loại dữ liệu, ví dụ: đối với cột đầu tiên – NĂM – mặc dù chúng tôi đã chèn bằng cách sử dụng hàm 'now()' là dấu thời gian hiện tại, nhưng giá trị được chèn chỉ là phần năm của ngày hiện tại . e. 2020
  • now() trả về ngày giờ hiện tại ở định dạng – dd. mm. yyyy. mm. ss
  • Lưu ý phần phân số trong tên cột có '_fractional'. Tùy thuộc vào số chữ số phân số được chỉ định, các giá trị phân số được ghi lại và hiển thị

Tự động khởi tạo và cập nhật các trường DATETIME và TIMESTAMP

Trong các tình huống thực tế – hầu hết thời gian, quá trình khởi tạo và cập nhật DATETIME được định cấu hình tự động

Điều này có nghĩa là các bảng thường có 2 cột như – created_time và updated_time

Cột created_time được định cấu hình để lấy giá trị của thời gian hệ thống hiện tại bất cứ khi nào hàng được chèn vào và tương tự, updated_time được định cấu hình để lấy thời gian hệ thống hiện tại bất cứ khi nào có bất kỳ cập nhật nào được thực hiện đối với một hàng cụ thể của bảng

Xin lưu ý rằng, trong thời gian chèn hàng, cả created_time và updated_time sẽ có cùng giá trị. Tất cả các cập nhật tiếp theo cho hàng sẽ dẫn đến việc cập nhật trường updated_time với thời gian hệ thống hiện tại

Hãy thử tạo một bảng như vậy có tự động khởi tạo cũng như cập nhật

Chúng tôi sẽ tạo một bảng có tên stock_price có các trường ký hiệu chứng khoán, giá và ngày giờ – created_on và updated_on

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 

Chèn một số dữ liệu vào bảng

insert into stock_price(symbol,price) values('AMZN','3000.10');

Hãy xem kết quả (lưu ý rằng chúng tôi vừa nhập các giá trị cho ký hiệu và giá – các cột ngày giờ, created_on và updated_on sẽ được khởi tạo tự động)

select * from stock_price

MySQL lấy ngày từ dấu thời gian

Hãy thử cập nhật giá cổ phiếu cho cổ phiếu ‘AMZN’ như hình bên dưới

update stock_price set price='3005.15' where symbol='AMZN'

Và bây giờ, tìm nạp lại dữ liệu cho bảng. Chúng ta sẽ thấy giá trị của updated_time được thay đổi thành bất cứ lúc nào cập nhật stock_price xảy ra

select * from stock_price

MySQL lấy ngày từ dấu thời gian

Bây giờ bạn có thể nhận thấy từ ví dụ trên rằng giá trị của cột updated_on đã được cập nhật vào dấu thời gian cập nhật

Các hàm ngày và giờ của MySQL

MySQL cung cấp nhiều chức năng cho các cột có kiểu dữ liệu liên quan đến ngày và giờ

Các chức năng này thường được sử dụng để,

  • Chuyển đổi ngày được lưu trữ thành định dạng bắt buộc trong khi truy vấn dữ liệu
  • Thao tác với các trường ngày giờ hiện có, chẳng hạn như thêm một khoảng thời gian vào giá trị hiện tại của cột, trừ số giờ khỏi các giá trị đã đặt hiện tại, v.v.
  • Ví dụ: trích xuất thông tin cụ thể từ các giá trị được lưu trữ, chỉ trích xuất phần “ngày” từ giá trị được lưu trữ và thực hiện thêm các thao tác/lọc như GROUP BY với ngày, v.v.

Trong phần này, chúng ta sẽ xem các ví dụ đối với các hàm Ngày và Giờ được sử dụng phổ biến nhất

>> Tham khảo tại đây để biết danh sách đầy đủ các chức năng đó

#1) Lấy ngày và giờ hiện tại

MySQL cung cấp rất nhiều hàm tiện dụng/giá trị không đổi để lấy các giá trị ngày và giờ hiện tại và thường được sử dụng trong khi lưu trữ các giá trị trong các cột ngày giờ hoặc truy xuất bất kỳ phạm vi cụ thể nào từ các giá trị ngày và giờ hiện tại

a) giám sát ()

Hàm này lấy ngày hiện tại. Các từ đồng nghĩa khác của hàm curdate() là – CURRENT_DATE, CURRENT_DATE(), CURRENT_DATE(fractionalDigits)

Ví dụ về chức năng này được hiển thị bên dưới

________số 8_______

MySQL lấy ngày từ dấu thời gian

b) giờ giấc ()

Hàm này lấy thời gian hiện tại. Để có được một phần phân số (tối đa 6 chữ số), hãy chỉ định phân số trong ngoặc đơn là curtime(3) Điều này sẽ lấy giá trị hiện tại của thời gian hệ thống lên đến 3 chữ số thập phân

Các từ đồng nghĩa khác của hàm curtime() là- CURRENT_TIME, CURRENT_TIME(), CURRENT_TIME(fractionalDigits)

select curtime(), CURRENT_TIME(), CURRENT_TIME, curtime(6), CURRENT_TIME(6)

MySQL lấy ngày từ dấu thời gian

c) bây giờ()

Hàm này lấy dấu thời gian hiện tại. Chỉ định phần phân số trong dấu ngoặc đơn, ví dụ: now(4) sẽ lấy dấu thời gian hiện tại lên đến 4 chữ số thập phân

Các từ đồng nghĩa khác của hàm now() bao gồm CURRENT_TIMESTAMP, CURRENT_TIMESTAMP(), CURRENT_TIMESTAMP(fractionalDigits)

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
0

MySQL lấy ngày từ dấu thời gian

#2) Cộng Và Trừ Ngày

MySQL cung cấp các hàm để cộng và trừ các giá trị ngày và giờ cho một giá trị hiện có được lưu trữ trong cột hoặc được sử dụng trong quá trình truy vấn dữ liệu. Chúng ta sẽ hiểu các chức năng với sự trợ giúp của các ví dụ

Chúng tôi sẽ sử dụng bảng dưới đây để thực hiện phép cộng trừ ngày giờ

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
1

Chèn một số mục vào bảng trên bằng cách sử dụng câu lệnh INSERT như hình bên dưới

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
2

Hãy truy vấn bảng trên và xem dữ liệu được lưu trữ

MySQL lấy ngày từ dấu thời gian

Ngoài việc cập nhật các cột trong bảng, chúng ta có thể trực tiếp thực hiện thao tác ngày giờ bằng cách sử dụng câu lệnh SELECT bằng cách áp dụng trên bất kỳ giá trị ngày/giờ hoặc ngày giờ cụ thể nào

a) THÊM()

Như tên gợi ý, hàm này được sử dụng để thêm ngày vào giá trị ngày hiện tại có thể thuộc loại - NGÀY, DATETIME hoặc DẤU THỜI GIAN

cú pháp

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
3

ADDDATE cũng có thể được gọi với giá trị Khoảng thời gian – có thể là NGÀY, TUẦN, GIỜ, PHÚT, GIÂY, v.v.

Cú pháp, trong trường hợp đó, sẽ thay đổi thành,

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
4

Hãy xem một vài ví dụ để hiểu điều này tốt hơn

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
5

Khi một giá trị số nguyên được cung cấp làm đối số thứ hai, nó được coi là số ngày sẽ được thêm vào ngày đã cho

Một số ví dụ khác với Khoảng thời gian là – THÁNG, GIỜ và TUẦN là

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
6
insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
7
insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
8

Các ví dụ khác về khoảng thời gian có thể là – PHÚT, GIÂY, QUARTER, v.v.

Ví dụ: để cập nhật một cột của bảng hiện có, đối với bảng chúng tôi đã tạo 'datetime_calc' nếu chúng tôi muốn cập nhật giá trị 'datecol' và thêm 10 ngày vào tất cả các ngày trong cột, chúng tôi có thể sử dụng truy vấn như bên dưới

insert into datetime_illustration values (now(), now(), now(), now(), now(), now(), now(), now());
select * from datetime_illustration
9

Bây giờ, hãy sử dụng CHỌN * để hiển thị tất cả dữ liệu trong bảng datetime_calc

select * from datetime_illustration
0

MySQL lấy ngày từ dấu thời gian

Chúng ta có thể thấy trong kết quả trên, các giá trị của cột datecol đã được cập nhật thành 24-09-2020 từ 25-08-2020 sau khi thêm 30 ngày vào các giá trị hiện có

b) THÊM GIỜ()

Tương tự như ADD_DATE, hàm ADD_TIME có thể được sử dụng để thêm thành phần thời gian vào cột/trường DATETIME, TIME hoặc TIMESTAMP hiện có hoặc đầu vào đã cho

cú pháp

select * from datetime_illustration
1

Thí dụ

select * from datetime_illustration
2

Hãy xem một ví dụ trong đó chúng tôi đang cập nhật cột ngày giờ trong bảng bằng cách thêm 5 giờ vào tất cả các giá trị trong cột đó. Đây là một truy vấn mẫu

select * from datetime_illustration
3

Đầu ra bảng trước

select * from datetime_illustration
4

Đầu ra bảng sau

select * from datetime_illustration
5

c) NỘI DUNG()

SUBDATE hoàn toàn giống với ADDDATE, điểm khác biệt duy nhất là SUBDATE trừ đi Khoảng/Không đã cho. ngày từ giá trị cột/trường
cú pháp

select * from datetime_illustration
6

Hãy xem xét một vài ví dụ để minh họa hàm SUBDATE()

select * from datetime_illustration
7

Ví dụ dưới đây hiển thị trừ một Khoảng thời gian được đề cập theo giờ/ngày trong tuần, v.v.

select * from datetime_illustration
8

d) THỜI GIAN PHỤ ()

SUBTIME trừ giá trị thời gian được chỉ định trong 'hh. mm. ss' từ một giá trị trường ngày giờ hoặc thời gian nhất định

cú pháp

select * from datetime_illustration
9

Ví dụ về hàm SUBTIME()

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
0

#3) Chuyển đổi ngày

MySQL cung cấp nhiều chức năng dựng sẵn từ việc chuyển đổi ngày từ định dạng này sang định dạng khác. Hãy xem các chức năng được sử dụng rộng rãi nhất để chuyển đổi ngày tháng

a) CHUYỂN ĐỔI_TZ()

Hàm này được sử dụng để chuyển đổi ngày từ múi giờ này sang múi giờ khác. Chúng hữu ích trong các trường hợp giả sử dữ liệu của bạn được lưu trữ bằng múi giờ UTC và trong khi hiển thị, bạn muốn chuyển đổi thành múi giờ bạn chọn

Ví dụ: chuyển đổi UTC thành MET (Giờ Trung Âu)

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
1

Mẹo/Ghi chú

#1) Để lấy danh sách tất cả các múi giờ trong cơ sở dữ liệu hệ thống MySQL, bạn có thể chạy truy vấn bên dưới và sử dụng bất kỳ tên múi giờ nào để chuyển đổi từ múi giờ này sang múi giờ khác

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
2

#2) Thông tin múi giờ được điền trong quá trình cài đặt phiên bản máy chủ MySQL. Nếu kết quả của truy vấn trên là NULL, thì trước tiên bạn có thể cần điền các giá trị múi giờ vào bảng hệ thống MySQL

>> Theo liên kết này để được trợ giúp thêm về điều này

b) TỪ_UNIXTIME()

Hàm này được sử dụng để chuyển đổi một UNIX TIMESTAMP đã cho sang định dạng ngày giờ của MySQL

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
3

c) UNIX_TIMESTAMP

Hàm này được sử dụng để chuyển đổi một datetime MySQL đã cho thành dấu thời gian UNIX

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
4

Dấu thời gian UNIX là đại diện của một ngày nhất định ở dạng giây trôi qua kể từ ngày 1 tháng 1 năm 1970, UTC

>> Tham khảo tại đây để biết thêm chi tiết về dấu thời gian UNIX.  

#4) Tìm nạp các phần cụ thể của cột ngày giờ

Đôi khi, bạn muốn tìm nạp một phần cụ thể của giá trị ngày cho giá trị trường ngày giờ trong bảng. Ví dụ: giả sử bạn muốn đếm số không. của các đơn đặt hàng và nhóm chúng theo ngày, tuần, tháng, v.v.

Và nói chung, các giá trị này không được lưu trữ dưới dạng các cột riêng biệt trong bảng – ví dụ: bạn sẽ chỉ có một cột như – created_on sẽ là trường ngày giờ và không có các cột riêng biệt như – ngày, tháng, năm, v.v.

MySQL cung cấp rất nhiều phương thức hữu ích để bạn có thể trích xuất phần mong muốn từ trường DateTime

Giả sử chúng ta có một giá trị ngày giờ là – ‘2020-03-15 07. 10. 56. 123’

Chúng ta hãy xem xét một số hàm được sử dụng rộng rãi với các ví dụ sử dụng giá trị ngày giờ ở trên

a) Trích xuất NGÀY

MySQL cung cấp các chức năng sau để trích xuất thông tin NGÀY

DATE() – Trích xuất phần DATE() của trường DateTime

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
5

DAYOFMONTH() – Trích xuất phần NGÀY của ngày giờ. Về cơ bản nó là ngày của tháng. Viết tắt để sử dụng chức năng này là DAY()

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
6

DAYOFWEEK() – Trích xuất chỉ mục tương ứng với ngày trong tuần – giá trị từ 1 đến 7

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
7

DAYOFYEAR() – Trích xuất ngày theo dạng không. số ngày trôi qua trong một năm. Các giá trị nằm trong khoảng từ 1 đến 365 (hoặc 366 nếu đó là năm nhuận)

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
8

DAYNAME() – Trích xuất tên của ngày với các giá trị từ Thứ Hai đến Chủ Nhật

create table stock_price(symbol varchar(100), price decimal(10,2),
 created_on datetime default current_timestamp, updated_on datetime
 default current_timestamp on update current_timestamp) 
9

b) Trích xuất THỜI GIAN

MySQL cung cấp các chức năng sau để trích xuất các giá trị THỜI GIAN

TIME() – Trích xuất phần thời gian ở định dạng hh. mm. ss (với thành phần giây phân số nếu có)

insert into stock_price(symbol,price) values('AMZN','3000.10');
0

HOUR() – Trích xuất phần giờ của trường/giá trị – các giá trị nằm trong khoảng từ 1-24

insert into stock_price(symbol,price) values('AMZN','3000.10');
1

MINUTE() – Trích xuất phần phút của ngày giờ đã cho – các giá trị nằm trong khoảng từ 1-60

insert into stock_price(symbol,price) values('AMZN','3000.10');
2

SECOND() – Trích xuất phần giây của thời gian đã cho – các giá trị nằm trong khoảng từ 1-60

insert into stock_price(symbol,price) values('AMZN','3000.10');
3

MICROSECOND() – Trích xuất phần micro giây của DateTime đã cho

insert into stock_price(symbol,price) values('AMZN','3000.10');
4

c) Trích xuất THÁNG

MONTH() – Trích xuất chỉ số tháng. Các giá trị nằm trong khoảng từ 1 – 12

insert into stock_price(symbol,price) values('AMZN','3000.10');
5

MONTHNAME() – Trích xuất tên tháng. Các giá trị nằm trong khoảng từ tháng 1 đến tháng 12

insert into stock_price(symbol,price) values('AMZN','3000.10');
6

d) Trích TUẦN, NĂM, QUÝ

WEEK() – Trích xuất TUẦN của năm cho giá trị DateTime đã cho

insert into stock_price(symbol,price) values('AMZN','3000.10');
7

YEAR() – Trích xuất phần NĂM của ngày

insert into stock_price(symbol,price) values('AMZN','3000.10');
8

QUARTER() – Trích xuất quý theo năm. Các giá trị nằm trong khoảng từ 1 đến 4

insert into stock_price(symbol,price) values('AMZN','3000.10');
9

Tất cả các phương pháp trên chủ yếu được sử dụng để phân tích dữ liệu và đưa ra dự đoán – ví dụ: ngày nào trong tháng là không. của đơn đặt hàng cao nhất, vv

#5) Tìm sự khác biệt giữa 2 ngày

Để tìm sự khác biệt giữa 2 giá trị trường thời gian đã cho, MySQL cung cấp các hàm DATEDIFF() & TIMEDIFF()

a) DATEIFF()

Trả về sự khác biệt giữa 2 giá trị DateTime (hoặc ngày) trong bất kỳ ngày nào

cú pháp

select * from stock_price
0

Hãy xem một số ví dụ về hàm DATEDIFF()

DATEDIFF() đang sử dụng đầu vào DateTime

select * from stock_price
1

DATEDIFF() sử dụng đầu vào Ngày

select * from stock_price
2

DATEDIFF() sử dụng các đầu vào Ngày có đầu ra âm

select * from stock_price
3

b) THỜI GIAN ()

Hàm này trả về sự khác biệt giữa 2 giá trị ngày giờ (hoặc thời gian) được biểu thị bằng 'hh. mm. ss’ với một phần phân số tùy chọn tùy thuộc vào đầu vào, hàm TIMEDIFF() được gọi với

cú pháp

select * from stock_price
4

Theo cú pháp trên, kết quả của hàm TIMEDIFF() sẽ là thời gian được chỉ định là 'hh. mm. ss' cho biểu thức=> DateTime1 – DateTIme2

Xin lưu ý rằng,

  • Cả Biểu thức 1 và Biểu thức 2 đều thuộc cùng một loại – i. e. một ngày giờ, một thời gian khác, sẽ trả về giá trị NULL
  • Biểu thức1 và Biểu thức2 không thể chỉ là ngày tháng. Thí dụ. DATEDIFF(2020-01-01, 2020-02-01) sẽ trả về NULL

Hãy xem một số ví dụ về hàm TIMEDIFF()

TIMEDIFF() sử dụng đầu vào DateTime

select * from stock_price
5

TIMEDIFF() sử dụng đầu vào Thời gian

select * from stock_price
6

TIMEDIFF() trả về đầu ra âm

select * from stock_price
7

Xin lưu ý rằng cả DATEDIFF() và TIMEDIFF() đều có thể trả về giá trị ÂM bất cứ khi nào đối số đầu tiên nhỏ hơn đối số thứ hai – i. e. đối số đầu tiên là giá trị dateTime cũ hơn so với đối số thứ hai

#6) Định dạng ngày

Hàm DATE_FORMAT() chuyển đổi ngày theo định dạng đã cho

Ví dụ. Chuyển đổi ngày bắt buộc ở định dạng mm/yyyy

select * from stock_price
8

Hãy xem một số quy ước phổ biến để sử dụng định dạng định dạng

Định dạng Mô tả Giá trị %YYear - 4 chữ số Giá trị %yYear - 2 chữ số %MMonth name like- Tháng 1, 2%mMonth name - số%dDay của tháng%hHour - 00 - 12%HHour - 00 - 23%iMinutes%SSSeconds

Tùy thuộc vào yêu cầu, các công cụ xác định định dạng này có thể được sử dụng và MySQL DateTime có thể được chuyển đổi thành định dạng được yêu cầu

Thí dụ. Chuyển đổi sang định dạng dd/mm/yyyy có thể được chỉ định là

select * from stock_price
9

>> Tham khảo danh sách đầy đủ các định dạng được hỗ trợ bởi MySQL

Các câu hỏi thường gặp

Q #1) Làm cách nào chúng tôi có thể thay đổi phần năm của ngày được lưu trữ trong MySQL?

Câu trả lời. Để cập nhật giá trị năm thành một số cụ thể cho một ngày nhất định, chúng ta có thể sử dụng hàm DATE_ADD và thêm sự khác biệt giữa năm hiện tại của ngày và năm mà chúng ta muốn thay đổi

Ví dụ. Giả sử chúng ta có ngày ‘2020-03-15 07. 10. 56. 123’ và chúng tôi chỉ muốn thay đổi phần năm của ngày thành 2018. Để làm điều đó,

  • Trước tiên, chúng tôi có thể tìm thấy sự khác biệt giữa năm được cập nhật và năm thực của ngày. Điều này có thể đạt được bằng cách sử dụng hàm NĂM
update stock_price set price='3005.15' where symbol='AMZN'
0
  • Bây giờ, chúng ta có thể thêm -2 này dưới dạng khoảng thời gian năm bằng cách sử dụng hàm DATE_ADD
update stock_price set price='3005.15' where symbol='AMZN'
1

Bạn có thể thấy ở trên chúng tôi vừa thay đổi phần năm của ngày

Tập hợp các bước tương tự có thể được sử dụng khi có yêu cầu thay đổi một phần cụ thể của ngày. Thí dụ. Tháng, Ngày, v.v.

Q #2) Làm cách nào để thay đổi ngày giờ theo định dạng bắt buộc trong MySQL?

Câu trả lời. MySQL cung cấp hàm DATE_FORMAT() để chuyển đổi ngày giờ thành chuỗi được định dạng bắt buộc để hiển thị trong kết quả truy vấn

>> Tham khảo danh sách đầy đủ các định dạng định dạng

Thí dụ. Để chuyển đổi datetime sang định dạng – dd. mm. yyyy, bạn có thể sử dụng truy vấn sau

update stock_price set price='3005.15' where symbol='AMZN'
2

Q #3) Định dạng ngày tháng trong MySQL là gì?

Câu trả lời. Định dạng ngày tiêu chuẩn trong MySQL là 'dd-mm-yyyy hh. mm. ss. {phần phân đoạn}

Giá trị ngày giờ mẫu được lưu trữ trong MySQL – ‘2020-03-15 07. 10. 56. 123’

Q #4) Cách tạo bảng với kiểu dữ liệu DATE trong MySQL

Câu trả lời. MySQL cung cấp các kiểu dữ liệu khác nhau để lưu trữ giá trị ngày và giờ theo nhu cầu. Để chỉ lưu trữ ngày tháng – Có thể sử dụng kiểu dữ liệu DATE. Nó lưu trữ dữ liệu ở định dạng yyyy-mm-dd
Hãy xem ví dụ về việc chỉ định cột là loại NGÀY

update stock_price set price='3005.15' where symbol='AMZN'
3

Phần kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu về các loại dữ liệu khác nhau được cung cấp bởi MySQL để lưu trữ các giá trị ngày và giờ cũng như cách sử dụng các hàm dễ sử dụng khác nhau do MySQL cung cấp để thực hiện các phép tính trên các giá trị ngày giờ.

Chúng ta cũng đã tìm hiểu về các chức năng khác nhau như trích xuất các phần cụ thể của giá trị DateTime đã cho, chuyển đổi một ngày đã cho thành một dạng khác, thêm giá trị ngày/giờ vào các giá trị hiện có, v.v.

DateTime là một trong những loại dữ liệu quan trọng nhất trong MySQL và có tầm quan trọng rất lớn đối với việc tìm nạp thông tin chi tiết khi một sự kiện xảy ra

Các giá trị này được sử dụng rất rộng rãi bởi các nhà phân tích dữ liệu/máy học/mô hình định giá, v.v. nơi thực hiện rất nhiều thao tác cắt nhỏ ngày tháng để chuẩn bị các mô hình máy học và đưa ra các quyết định kinh doanh quan trọng

Làm cách nào để chuyển đổi dấu thời gian thành ngày trong MySQL?

Trong bài viết này, chúng ta sẽ tìm hiểu cách chuyển đổi Dấu thời gian thành Ngày giờ trong MySQL. Để thực hiện các truy vấn này, trước tiên chúng ta cần thêm dữ liệu số nguyên (được viết ở định dạng dấu thời gian) rồi sử dụng hàm FROM_UNIXTIME() để chuyển đổi dữ liệu đó thành Kiểu dữ liệu “Datetime”.

Làm cách nào tôi chỉ có thể lấy ngày từ dấu thời gian?

Một cách khác mà bạn có thể trích xuất các giá trị ngày từ một dấu thời gian cụ thể là thông qua sử dụng “. ” toán tử theo sau là từ khóa “DATE” . Với phương pháp này, bạn có thể thực hiện dấu thời gian chuyển đổi Postgres cụ thể thành ngày hoặc chuyển đổi dấu thời gian hiện tại (sử dụng hàm now()) thành ngày.

Làm cách nào để chỉ lấy ngày từ dấu thời gian hiện tại trong SQL?

Có một số cách để làm điều đó. .
Sử dụng CHUYỂN ĐỔI sang VARCHAR. CHUYỂN ĐỔI cú pháp. CHUYỂN ĐỔI ( data_type [ ( độ dài ) ] , biểu thức [ , kiểu ] ).
Bạn cũng có thể chuyển đổi sang ngày. CHỌN CHUYỂN ĐỔI(ngày, ngày lấy()); . .
Sử dụng CAST

Làm cách nào để chuyển đổi dấu thời gian ngày thành ngày trong SQL?

2. CAST . Hàm CAST() hoạt động giống như CONVERT(), i. e. nó cũng chuyển đổi giá trị của bất kỳ loại dữ liệu nào thành loại dữ liệu mong muốn. Do đó, chúng ta có thể sử dụng chức năng này để chuyển đổi dấu thời gian hiện tại đã truy xuất thành giá trị ngày và giờ.