Ngày MySQL giữa không hoạt động

DAY() là một chức năng tốt hơn cho những gì bạn muốn và tôi thích sử dụng >=< hơn là BETWEEN để so sánh ngày, vì nó cho phép bạn chỉ định phạm vi chính xác dễ dàng hơn. Ví dụ ở đây, bạn không cần biết số ngày trong tháng

Tôi cũng đã sử dụng định dạng ngày tháng mặc định, tốt hơn là. Theo ý kiến ​​của tôi, nếu bạn cần định dạng ngày tháng của Mỹ, hãy sử dụng DATE_FORMAT() trong

UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
0 của bạn

Điều này sẽ chỉ hoạt động với các cột

UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
1,
UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
2 và
UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
3, đó là cách lưu trữ
UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
4 của bạn, tốt nhất là
UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
1

CẬP NHẬT

Để chuyển đổi cột

UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
6 thành
UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
1 hãy chạy

UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')

Sau đó thay đổi loại. Ngoài ra, hãy nhớ thay đổi câu lệnh

UPDATE tasks SET due_date=STR_TO_DATE(due_date,'%m/%d/%Y')
8 của bạn để sử dụng định dạng mặc định

điểm. 2

Bạn phải chuyển đổi các chuỗi "ngày" đó thành các giá trị ngày thích hợp với

SELECT 
   DAY(STR_TO_DATE(due_date,'%m/%d/%Y')) AS day 
FROM tasks 
WHERE 
  STR_TO_DATE(due_date, '%m/%d/%Y') 
  BETWEEN STR_TO_DATE('08/01/2014' '%m/%d/%Y') 
  AND STR_TO_DATE('08/31/2014', '%m/%d/%Y')

thay vào đó, bạn đang so sánh các chuỗi

Ghi chú

Thay vào đó, sẽ tốt hơn nếu sử dụng cột NGÀY hoặc NGÀY thích hợp
Với định dạng VARCHAR hiện tại, MySQL không thể sử dụng các chỉ mục. Điều đó rất tệ cho hiệu suất

Bạn có thể chuyển đổi dữ liệu của mình bằng cách thêm một cột khác vào bảng của mình

ALTER TABLE tasks
ADD COLUMN new_due_date DATE;

Sau đó, bạn sử dụng câu lệnh CẬP NHẬT để điền vào cột mới này

UPDATE tasks
SET new_due_date = STR_TO_DATE(due_date, '%m/%d/%Y');

Nếu bạn không cần cột cũ nữa thì bạn có thể xóa cột này và sửa cột mới thành tên của cột cũ. Sau đó, bạn sẽ có bảng với tất cả dữ liệu của mình trong cột NGÀY

Điều kiện GIỮA MySQL được sử dụng để truy xuất các giá trị trong một phạm vi trong câu lệnh CHỌN, CHÈN, CẬP NHẬT hoặc XÓA

cú pháp

Cú pháp của Điều kiện GIỮA trong MySQL là

expression BETWEEN value1 AND value2;

Tham số hoặc Đối số

cột biểu thức hoặc phép tính. value1 và value2Những giá trị này tạo ra một phạm vi bao hàm mà biểu thức được so sánh với

Ghi chú

  • Điều kiện BETWEEN của MySQL sẽ trả về các bản ghi có biểu thức nằm trong phạm vi giá trị 1 và giá trị 2 (bao gồm)
  • Khi sử dụng Điều kiện GIỮA MySQL với ngày tháng, hãy đảm bảo sử dụng hàm CAST để chuyển đổi rõ ràng các giá trị thành ngày tháng

Ví dụ - Với Số

Hãy xem xét một số ví dụ về điều kiện GIỮA MySQL bằng cách sử dụng các giá trị số. Ví dụ số sau đây sử dụng điều kiện GIỮA để truy xuất các giá trị trong một phạm vi số

Ví dụ

SELECT *
FROM contacts
WHERE contact_id BETWEEN 100 AND 200;

Ví dụ MySQL GIỮA này sẽ trả về tất cả các hàng từ bảng nhà cung cấp trong đó nhà cung cấp KHÔNG nằm trong khoảng từ năm 2000 đến 2999, bao gồm cả. Nó sẽ tương đương với câu lệnh SELECT sau

Toán tử BETWEEN chọn các giá trị trong một phạm vi nhất định. Các giá trị có thể là số, văn bản hoặc ngày tháng

Toán tử BETWEEN là bao hàm. giá trị bắt đầu và kết thúc được bao gồm

Cú pháp GIỮA

CHỌN tên_cột
TỪ tên_bảng
WHERE cột_name GIỮA giá trị1 VÀ giá trị2;


Cơ sở dữ liệu demo

Dưới đây là một lựa chọn từ bảng "Sản phẩm" trong cơ sở dữ liệu mẫu của Northwind

Sản phẩmIDSản phẩmTênNhà cung cấpIDDanh mụcIDUnitGiá1Chais1110 hộp x 20 túi182Chang1124 - chai 12 oz193Aniseed Syrup1212 - chai 550 ml104Gia vị Chef Anton's Cajun1248 - lọ 6 oz225Chef Anton's Gumbo Mix1236 hộp21. 35


GIỮA Ví dụ

Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá từ 10 đến 20



KHÔNG GIỮA Ví dụ

Để hiển thị các sản phẩm nằm ngoài phạm vi của ví dụ trước, hãy sử dụng NOT BETWEEN


GIỮA với IN Ví dụ

Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá từ 10 đến 20. Ngoài ra;

Ví dụ

CHỌN * TỪ Sản phẩm
Ở ĐÂU Giá GIỮA 10 VÀ 20
AND CategoryID NOT IN (1,2,3);

Tự mình thử »


GIỮA Giá trị văn bản Ví dụ

Câu lệnh SQL sau đây chọn tất cả các sản phẩm có ProductName nằm giữa "Carnarvon Tigers" và "Mozzarella di Giovanni"

Ví dụ

CHỌN * TỪ Sản phẩm
Ở ĐÂU Tên sản phẩm GIỮA 'Carnarvon Tigers' VÀ 'Mozzarella di Giovanni'
ĐẶT HÀNG THEO Tên sản phẩm;

Tự mình thử »

Câu lệnh SQL sau đây chọn tất cả các sản phẩm có ProductName nằm giữa "Carnarvon Tigers" và "Chef Anton's Cajun Seasoning"

Ví dụ

CHỌN * TỪ Sản phẩm
Ở ĐÂU Tên sản phẩm GIỮA "Carnarvon Tigers" VÀ "Chef Anton's Cajun Seasoning"
ĐẶT HÀNG THEO Tên sản phẩm;

Tự mình thử »


KHÔNG GIỮA Giá trị văn bản Ví dụ

Câu lệnh SQL sau đây chọn tất cả các sản phẩm có ProductName không nằm trong khoảng "Carnarvon Tigers" và "Mozzarella di Giovanni"

Ví dụ

CHỌN * TỪ Sản phẩm
Ở ĐÂU Tên sản phẩm KHÔNG GIỮA 'Carnarvon Tigers' VÀ 'Mozzarella di Giovanni'
ĐẶT HÀNG THEO Tên sản phẩm;

Tự mình thử »


Bảng mẫu

Dưới đây là một lựa chọn từ bảng "Đơn hàng" trong cơ sở dữ liệu mẫu của Northwind

OrderIDCustomerIDEemployeeIDOrderDateShipperID102489057/4/19963102498167/5/19961102503447/8/19962102518437/9/19961102527647/10/19962


GIỮA NGÀY Ví dụ

Câu lệnh SQL sau đây chọn tất cả các đơn đặt hàng có OrderDate trong khoảng từ '01- July-1996' đến '31- July-1996'

Ví dụ

CHỌN * TỪ Đơn đặt hàng
WHERE OrderDate GIỮA '1996-07-01' AND '1996-07-31';

Tự mình thử »


Kiểm tra bản thân với các bài tập

Bài tập

Sử dụng toán tử BETWEEN để chọn tất cả các bản ghi có giá trị của cột Price nằm trong khoảng từ 10 đến 20

Làm cách nào tôi có thể lấy ngày giữa hai ngày trong MySQL?

Để đếm sự khác biệt giữa các ngày trong MySQL, hãy sử dụng hàm DATEDIFF(ngày kết thúc, ngày bắt đầu) . Sự khác biệt giữa ngày bắt đầu và ngày kết thúc được biểu thị bằng ngày.

Cách sử dụng giữa hai ngày trong SQL?

SQL giữa hai ngày .
CHỌN (các) tên_cột TỪ_tên_bảng. WHERE cột_name GIỮA start_bound VÀ end_bound;
TẠO BẢNG. vật mẫu. hàng tồn kho ( product_name VARCHAR(255) NOT NULL, giá INT NOT NULL, buy_date DATE );
CHÈN VÀO. vật mẫu. hàng tồn kho. GIÁ TRỊ. ('Ví thông minh', 89, '23-04-2022');

Không phải là giữa trong MySQL?

Toán tử MySQL NOT BETWEEN AND kiểm tra xem giá trị có tồn tại giữa biểu thức bắt đầu và biểu thức kết thúc hay không . Nếu expr không lớn hơn hoặc bằng min và expr không nhỏ hơn hoặc bằng max, BETWEEN trả về 1, ngược lại, trả về 0.

Làm cách nào để lấy dữ liệu giữa hai dấu thời gian trong SQL?

Như đã nêu ở trên, định dạng ngày và giờ trong bảng của chúng ta sẽ là yyyy. mm. đh. mm. ss được ngụ ý bởi DATETIME2. Thời gian ở định dạng 24 giờ. cú pháp. CHỌN * TỪ TABLE_NAME WHERE DATE_TIME_COLUMN GIỮA 'STARTING_DATE_TIME' VÀ 'ENDING_DATE_TIME';