So sánh thời gian của MySQL trong mệnh đề WHERE
Trong hướng dẫn này, bạn đã tìm hiểu về kiểu dữ liệu 0 của MySQL và một số hàm 0 hữu ích Một giá trị ngày, giờ hoặc dấu thời gian có thể được so sánh với một giá trị khác của cùng một loại dữ liệu, một hằng số ngày giờ của cùng một loại dữ liệu hoặc với một biểu diễn chuỗi của một giá trị của loại dữ liệu đó. Ngoài ra, giá trị DẤU THỜI GIAN KHÔNG CÓ Múi giờ có thể được so sánh với giá trị DẤU THỜI GIAN CÓ Múi giờ Tất cả các so sánh đều theo trình tự thời gian, có nghĩa là thời điểm càng xa từ ngày 1 tháng 1 năm 0001 thì giá trị của thời điểm đó càng lớn. Thời gian 24. 00. 00 so sánh lớn hơn thời gian 00. 00. 00 So sánh liên quan đến giá trị THỜI GIAN và biểu diễn chuỗi giá trị thời gian luôn bao gồm giây. Nếu biểu diễn chuỗi bỏ qua giây, thì không có giây nào được ngụ ý Các so sánh liên quan đến giá trị dấu thời gian được đánh giá theo các quy tắc sau
ví dụ 1. Bảng TABLE1 có 2 cột. C1, được định nghĩa là DẤU THỜI GIAN VỚI Múi giờ; . Một hàng được chèn vào bảng với câu lệnh INSERT sau. Các giá trị đầu vào được cung cấp bởi các biểu diễn chuỗi ký tự của dấu thời gian với múi giờ. Giả sử rằng múi giờ ngầm định là -5:00 , câu lệnh SELECT sau đây sẽ không trả về bất kỳ hàng nào. Biểu diễn chuỗi của giá trị DẤU THỜI GIAN KHÔNG CÓ Múi giờ được chuyển thành giá trị DẤU THỜI GIAN CÓ Múi giờ, dẫn đến dấu thời gian có giá trị múi giờ là '2007-11-05-08.00.00-05:00' cho cột C2. Vị từ so sánh là sai vì hai giá trị không bằng nhau.
ví dụ 2. Khi giá trị DẤU THỜI GIAN KHÔNG CÓ Múi giờ được so sánh với một biểu diễn chuỗi của DẤU THỜI GIAN KHÔNG CÓ Múi giờ hoặc giá trị DẤU THỜI GIAN CÓ Múi giờ, thì biểu diễn chuỗi được chuyển thành DẤU THỜI GIAN KHÔNG CÓ Múi giờ (bất kể chuỗi có chứa múi giờ hay không). Việc so sánh được thực hiện bằng cách sử dụng hai giá trị DẤU THỜI GIAN KHÔNG CÓ Múi giờ. Giả sử rằng string_hv chứa dấu thời gian có giá trị múi giờ là Thật khó để sử dụng ngày tháng trong truy vấn máy chủ SQL, đặc biệt nếu bạn không có kiến thức tốt về cách thức hoạt động của loại DateTime trong máy chủ SQL. Ví dụ: một trong những truy vấn SQL thường được hỏi trong cuộc phỏng vấn là "chọn tất cả các hàng có ngày là 20151007?" Truy vấn so sánh ngày trong SQLĐể hiểu cách so sánh ngày tháng trong SQL, hãy xem một ví dụ trong đó trường DateTime cũng có một số giá trị thời gianGiả sử chúng ta có bảng sau với varchar course_name và datetime course_date columns: IF OBJECT_ID( 'tempdb..#Course' ) IS NOT NULL DROP TABLE #Course; CREATE TABLE #Course (course_name varchar(10), course_date datetime); INSERT INTO #Course VALUES ('Java', '2015-10-06 11:16:10.496'); INSERT INTO #Course VALUES ('MySQL', '2015-10-07 00:00:00.000'); INSERT INTO #Course VALUES ('SQL SERVER', '2015-10-07 11:26:10.193' ); INSERT INTO #Course VALUES ('PostgreSQL', '2015-10-07 12:36:10.393'); INSERT INTO #Course VALUES ('Oracle', '2015-10-08 00:00:00.000'); Bây giờ, bạn cần viết một truy vấn để nhận tất cả các khóa học vào ngày '2015-10-07'? ________số 8_______ Hãy xem giải pháp khác hoạt động như thế nào Nếu bạn chỉ so sánh ngày với toán tử = và chỉ cung cấp ngày, bạn sẽ nhận được các hàng có trường thời gian bằng 0 vì máy chủ SQL sẽ sử dụng '00. 00. 00. 000" cho thời gian, như trong ví dụ sau. SELECT * FROM #Course WHERE course_date = '2015-10-07' course_name course_date MySQL 2015-10-07 00:00:00.000 Bạn có thể thấy nó chỉ mang lại một hàng, trong đó thời gian bằng 0, nó không khớp với hai hàng khác khi thời gian khác không. Xem Truy vấn Microsoft SQL Server 2012 để tìm hiểu thêm về cách máy chủ SQL xử lý các định dạng ngày và thông tin ngày và giờ bị thiếu Giải pháp 2 - So sánh ngày với mệnh đề betweenCó vẻ như giữa là tùy chọn phù hợp để so sánh các ngày không tính thời gian. Bạn có thể đặt ngày hiện tại và ngày tiếp theo để bao gồm tất cả các thời điểm có ngày giống nhau, nhưng tiếc là điều đó sẽ không hoạt động. Nó cũng sẽ lấy giá trị ngày tiếp theo như bên dưới.SELECT * FROM #Course WHERE course_date between '2015-10-07' and '2015-10-08' course_name course_date MySQL 2015-10-07 00:00:00.000 SQL SERVER 2015-10-07 11:26:10.193 PostgreSQL 2015-10-07 12:36:10.393 Oracle 2015-10-08 00:00:00.000 Bạn có thể thấy giữa cũng được tìm nạp 2015-10-08 00. 00. 00. 000 giá trị, không mong muốn. Điều này xảy ra vì mệnh đề BETWEEN sẽ luôn kéo bất kỳ giá trị nào của ngày tiếp theo nửa đêm. Xem Truy vấn Microsoft SQL Server 2012 để tìm hiểu thêm về chủ đề này. Cuộc thảo luận cũng hợp lệ cho SQL Server 2014. Luôn sử dụng >= và < để so sánh ngày thángCâu trả lời đúng là sử dụng các toán tử lớn hơn (>) và nhỏ hơn (<). Điều này sẽ làm việc như mong đợi. Để sử dụng tùy chọn này, chỉ cần đặt ngày và ngày tiếp theo vào mệnh đề where như hình bên dướiSELECT * FROM #Course WHERE course_date >= '2015-10-07' and course_date < '2015-10-08' course_name course_date MySQL 2015-10-07 00:00:00.000 SQL SERVER 2015-10-07 11:26:10.193 PostgreSQL 2015-10-07 12:36:10.393 Bạn có thể thấy chúng tôi có chính xác ba 3 hàng như mong đợi. Chỉ cần nhớ sử dụng < ở vị từ thứ hai, điều này sẽ đảm bảo rằng '2015-10-08 00. 00. 00. 000' sẽ không được chọn. Đó là tất cả về cách so sánh các cột ngày tháng trong SQL Server. Bạn có thể thấy rằng truy vấn SQL sai ngày rất dễ xảy ra. Đôi khi bạn cảm thấy truy vấn của mình hoạt động tốt nhưng lại không thành công trong môi trường thực, Tại sao? . Trong QA nếu bạn không có bất kỳ giá trị ngày nửa đêm nào thì mệnh đề ngày giữa sẽ hoạt động tốt nhưng nếu bạn có giá trị nửa đêm trong môi trường thực thì nó sẽ không thành công Cách đúng để so sánh các giá trị chỉ ngày với cột DateTime là sử dụng điều kiện '00. 00. 00. 000' và kết thúc tại "59. 59. 59. 999" . Cũng đáng ghi nhớ là khi bạn thực hiện date = '2015-10-08' và nếu ngày là cột DateTime thì SQL Server . 00. 00. giá trị 000'. Vì vậy, xin vui lòng nhận thức được điều đó. Nhân tiện, nếu bạn muốn thực hành các truy vấn SQL đầy thử thách thì bạn cũng có thể xem Joe Celko's SQL Puzzles and Answers, Second Edition, một trong những cuốn sách thú vị để cải thiện kỹ năng SQL. Các bài viết SQL Server khác mà bạn có thể thích
Học thêm Giới thiệu về SQL Chương trình đào tạo SQL hoàn chỉnh SQL cho người mới. Phân tích dữ liệu cho người mới bắt đầu Làm cách nào để so sánh hai ngày trong mệnh đề WHERE trong SQL?Bây giờ, chúng ta có thể so sánh ngày theo hai cách. . Sử dụng toán tử so sánh Sử dụng mệnh đề BETWEEN Sử dụng toán tử so sánh với TimeStamp Truyền DATETIME thành NGÀY mà không có Dấu thời gian Sử dụng Mệnh đề Giữa với DATETIME Làm cách nào để so sánh hai dấu thời gian trong MySQL?Để tính toán sự khác biệt giữa các dấu thời gian trong MySQL, hãy sử dụng hàm TIMESTAMPDIFF(đơn vị, bắt đầu, kết thúc) . Đối số đơn vị có thể là MICROSECOND , SECOND , MINUTE , HOUR , DAY , WEEK , MONTH , QUARTER hoặc Year. Để có sự khác biệt tính bằng giây như chúng ta đã làm ở đây, hãy chọn SECOND.
Làm cách nào để sử dụng mệnh đề WHERE cho ngày trong MySQL?Bạn nên sử dụng định dạng này trong biểu thức CẬP NHẬT và trong mệnh đề WHERE của câu lệnh CHỌN. Ví dụ. SELECT * FROM t1 WHERE date >= '2003-05-05'; Để thuận tiện, MySQL tự động chuyển đổi ngày thành số nếu ngày đó là .
Làm cách nào để so sánh hai trường 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. |
Bài Viết Liên Quan
Hướng dẫn can i learn html and css in a month? - tôi có thể học html và css trong một tháng không?
Bạn không thể làm chủ HTML, CSS, JS trong một tháng, nhưng bạn có thể học nó ở cấp độ mà bạn có thể làm việc như một người làm việc tự do hoặc tạo ...
Hướng dẫn sumita arora python class 11 solutions chapter 4 - sumita arora python giải pháp lớp 11 chương 4
Ex 4.1Ex 4.2Ex 4.3Ex 4.4Ví dụ 4.5Ex 4.6Ex 4.7Ví dụ 4.8Bài tập trở lại Phần ABài tập trở lại Phần BBài tập trở lại Phần C 5. Viết một chương trình để tính ...
Hướng dẫn tic tac toe in python using lists - tic tac toe trong python sử dụng danh sách
Danh sách và trò chơi Tic Tac Toe - Học cách lập trình với Python 3 (cơ bản)Xin chào và chào mừng đến phần 3 của các hướng dẫn cơ bản của Python 3. Trong video ...
Hướng dẫn how long does it take to learn javascript if you know c++ - mất bao lâu để học javascript nếu bạn biết c ++
JavaScript là một trong những ngôn ngữ phổ biến nhất để tạo các trang web tương tác. Cùng với HTML và CSS, nó là một kỹ năng phát triển web bắt buộc phải ...
Hướng dẫn print prime numbers from 1 to 100 in python using while loop - in các số nguyên tố từ 1 đến 100 trong python bằng vòng lặp while
Một số nguyên dương lớn hơn 1 không có yếu tố nào khác ngoại trừ 1 và bản thân số được gọi là số nguyên tố.2, 3, 5, 7, vv là số nguyên tố vì chúng ...
Hướng dẫn how do you define a prime number in python? - làm thế nào để bạn xác định một số nguyên tố trong python?
Ví dụ để kiểm tra xem một số nguyên có phải là số nguyên tố hay không sử dụng cho vòng lặp và nếu ... câu lệnh khác. Nếu số không phải là nguyên tố, ...
Hướng dẫn greatest among three numbers in python assignment expert - lớn nhất trong số ba con số trong chuyên gia phân công python
Viết một chương trình lấy ba số làm đầu vào từ người dùng và in lớn nhất.Enter a number: 20 Enter a number: 50 Enter a number: 5 Largest: 50numbers = [] for _ in ...
Hướng dẫn where does wkhtmltopdf install to? - wkhtmltopdf cài đặt ở đâu?
Trước khi chạy các lệnh được hiển thị trên trang này, bạn nên tải môi trường Stack Bitnami bằng cách thực thi tập lệnh InstallDIR/Use_Appname (Linux và MacOS) ...
Hướng dẫn what is append in python example? - append trong ví dụ python là gì?
Danh sách các phương phápThí dụThêm một phần tử vào danh sách list.append(item)2: Trái cây = [Apple, Banana, Cherry] trái cây.Append (Orange)fruits.append(orange) Hãy ...
Khai thuế ở mỹ 2023
Chào mừng quý vị đến với Bộ phận Thị thực Không định cư (còn gọi là NIV) của Đại sứ quán Hoa Kỳ và Tổng Lãnh sự quán Hoa Kỳ tại Việt Nam. Để ...
Tải mẫu bảng lương 2023
Bộ trưởng Tài chính vừa có báo cáo gửi Quốc hội giải trình các ý kiến đại biểu Quốc hội khi thảo luận tại tổ về tình hình ngân sách nhà nước ...
Hướng dẫn what is php variable in web programming? - biến php trong lập trình web là gì?
Các biến là container để lưu trữ thông tin.Tạo (khai báo) các biến PHPTrong PHP, một biến bắt đầu với dấu $, theo sau là tên của biến:Sau khi thực hiện các ...
Hướng dẫn user defined functions in python ppt - người dùng xác định các chức năng trong ppt python
Chúng tôi đã cập nhật chính sách bảo mật của mình để chúng tôi tuân thủ việc thay đổi các quy định về quyền riêng tư toàn cầu và để cung cấp cho bạn ...
Hướng dẫn html inline javascript variable - biến javascript nội dòng html
Background:Tôi đang sử dụng plugin skrollr như một phần của dự án Rails đang sử dụng Slim cho đánh dấu. Plugin yêu cầu các thuộc tính dữ liệu cho điểm bắt ...
Hội chợ hà nội 2023
Giới ThiệuGiới thiệu chung về Hội Chợ Xuân Giảng VõĐơn Vị Tổ ChứcCác hoạt động tại Hội Chợ Tham Gia Hội Chợ Thông tin chung về Hội Chợ Xuân ...
Hướng dẫn biopython free online course - khóa học trực tuyến miễn phí biopython
GIỚI THIỆU BIOPYTHON – NGÔN NGỮ CỦA TIN SINH HỌC(Nguồn: http://bioinformatics.vn)1 Biopython là gì?Dự án Biopython là 1 tổ chức quốc tế của những lập trình viên ...
Hướng dẫn php loop programs - chương trình vòng lặp php
Tács giả: dương nguyễn phú cườngNgàoHồi xưa đó Một vòng lặp là một cấu trúc điều khiển lặp liên quan đến việc thực hiện cùng một số mã một số ...
Hướng dẫn increase php memory limit wordpress - tăng giới hạn bộ nhớ php wordpress
Nó xảy ra với tất cả các chủ sở hữu trang web và quản trị viên WordPress cuối cùng: lỗi bộ nhớ WordPress đáng sợ.Bạn có ý định kinh doanh của riêng mình ...
Tử vi ngày 15 tháng 11 năm 2023
15Thứ TưHãy sống xứng đáng và hãy nghĩ mỗi ngày là một cuộc đời!- L. A. Seneca - 3Ngày Hoàng đạoNăm Quý MãoTháng Quý HợiNgày Đinh Sửu13:19:42Giờ Canh ...
Hướng dẫn is there a size limit on a python dictionary? - có giới hạn kích thước trên từ điển python không?
Bạn không có dấu phân cách giữa var_name = x_{}_{}_{}.format(i, j, k) 9 và var_dict[i, j, k] = f(var_name, other_params) 0 trong các chuỗi được xây dựng của bạn, vì vậy ...