Database
 sql >> Baza danych >  >> RDS >> Database

Jak porównać datę w SQL

W tej sekcji dowiemy się, jak można porównywać daty w SQL.

  • Możemy porównać dowolną losową datę z inną datą zapisaną w kolumnie tabeli.
  • To porównanie można przeprowadzić za pomocą operatorów porównania takie >, <,>=,>=, =.
  • data () funkcja jest również używana w SQL do porównywania dwóch różnych dat.
  • Typ danych DATE umożliwia przechowywanie dat w tabelach SQL w formacie „RRRR-MM-DD”. Ale podczas pisania zapytania w celu porównania dat data do zapisania w zapytaniu może być w luźnym formacie ciągu.
  • Zgodnie ze zrelaksowanym formatem ciągu, różne części daty można oddzielić dowolnym znakiem pomiędzy nimi. MySQL umożliwia również zapisanie daty w zapytaniu bez żadnego separatora, pod warunkiem, że ciąg zapisany jako data tworzy sensowną datę.

Przykład 1:

Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest późniejsza lub taka sama jak 5 maja 1999 r.

Utwórz bazę danych o nazwie „dbemployee ” z utworzoną w nim tabelą „pracownik”. Rozważymy tę tabelę i bazę danych we wszystkich poniższych przykładach.

mysql> CREATE DATABASE dbemployee;
Query OK, 1 row affected (0.00 sec)
mysql> USE dbemployee;
Database changed
mysql> CREATE TABLE employee (Emp_Id INT NOT NULL, Emp_Name VARCHAR (20), Emp_Dept VARCHAR (20), Emp_Salary INT, Emp_Joining_Date DATE);
Query OK, 0 rows affected (0.09 sec)

Stworzyliśmy nową bazę danych o nazwie „dbemployee” i za pomocą polecenia „USE dbemployee” wybraliśmy tę bazę danych. Następnie za pomocą polecenia „CREATE TABLE” stworzyliśmy tabelę „employee” w bazie danych „dbemployee”.

Teraz wstawimy dane do utworzonej powyżej tabeli.

mysql> INSERT INTO employee VALUES (1, "Sana Khan", "HRM", 45000, "1999-06-17");
Query OK, 1 row affected (0.05 sec)
mysql> INSERT INTO employee VALUES (2, "Anupama Deshmukh", "Finance", 32000, CURDATE ());
Query OK, 1 row affected (0.11 sec)


mysql> INSERT INTO employee VALUES (3, "Kajal Shah", "Purchasing", 71000, "2020-12-12");
Query OK, 1 row affected (0.09 sec)


mysql> INSERT INTO employee VALUES (4, "Mayuri Koli", "Accounts", 64000, "1987-08-18");
Query OK, 1 row affected (0.09 sec)


mysql> INSERT INTO employee VALUES (5, "Surili Maheshwari", "Production", 30000, "1970-10-10");
Query OK, 1 row affected (0.09 sec)

Po pomyślnym wstawieniu danych do tabeli, pobierzemy teraz wszystkie rekordy tabeli.

mysql> SELECT *FROM employee;
+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name          | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
|      1 | Sana Khan         | HRM        |      45000 | 1999-06-17       |
|      2 | Anupama Deshmukh  | Finance    |      32000 | 2021-06-26       |
|      3 | Kajal Shah        | Purchasing |      71000 | 2020-12-12       |
|      4 | Mayuri Koli       | Accounts   |      64000 | 1987-08-18       |
|      5 | Surili Maheshwari | Production |      30000 | 1970-10-10       |
+--------+-------------------+------------+------------+------------------+
5 rows in set (0.00 sec)

Teraz napiszmy zapytanie dla podanego opisu problemu.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date >= '1999-05-05';

Wyjście:

+--------+------------------+------------+------------+------------------+
| Emp_Id | Emp_Name         | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+------------------+------------+------------+------------------+
|      1 | Sana Khan        | HRM        |      45000 | 1999-06-17       |
|      2 | Anupama Deshmukh | Finance    |      32000 | 2021-06-26       |
|      3 | Kajal Shah       | Purchasing |      71000 | 2020-12-12       |
+--------+------------------+------------+------------+------------------+
3 rows in set (0.00 sec)

Jest trzech pracowników o numerach identyfikacyjnych 1, 2 i 3, których data przystąpienia jest późniejsza niż 5 maja 1999 r.

Przykład 2:

Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest krótsza lub taka sama jak 5 maja 1999 r.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date <= '19990505';

Wyjście:

+--------+-------------------+------------+------------+------------------+
| Emp_Id | Emp_Name          | Emp_Dept   | Emp_Salary | Emp_Joining_Date |
+--------+-------------------+------------+------------+------------------+
|      4 | Mayuri Koli       | Accounts   |      64000 | 1987-08-18       |
|      5 | Surili Maheshwari | Production |      30000 | 1970-10-10       |
+--------+-------------------+------------+------------+------------------+
2 rows in set (0.00 sec)

Dwóch pracowników o numerach identyfikacyjnych 4 i 5, których data przystąpienia przypada na mniej niż 5 maja 1999 r.

Przykład 3:

Napisz zapytanie, aby znaleźć wszystkich pracowników, których data dołączenia jest taka sama jak 8 sierpnia 1987 r.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;

Wyjście:

+--------+-------------+----------+------------+------------------+
| Emp_Id | Emp_Name    | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+-------------+----------+------------+------------------+
|      4 | Mayuri Koli | Accounts |      64000 | 1987-08-18       |
+--------+-------------+----------+------------+------------------+
1 row in set (0.00 sec)

Jest tylko jeden pracownik o identyfikatorze pracownika 4, którego data przystąpienia to 18 sierpnia 1987 r.

Korzystanie z data()

Przykład 4:

Napisz zapytanie za pomocą funkcji daty (), aby znaleźć wszystkich pracowników, których data dołączenia jest taka sama jak 26 czerwca 2021 r.

mysql> SELECT *FROM employee WHERE date (Emp_Joining_Date) = '2021-06-26';

Wyjście:

+--------+------------------+----------+------------+------------------+
| Emp_Id | Emp_Name         | Emp_Dept | Emp_Salary | Emp_Joining_Date |
+--------+------------------+----------+------------+------------------+
|      2 | Anupama Deshmukh | Finance  |      32000 | 2021-06-26       |
+--------+------------------+----------+------------+------------------+
1 row in set (0.00 sec)

Jest tylko jeden pracownik o identyfikatorze pracownika 2, którego data przystąpienia to 26 czerwca 2021 r.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć rekordy z NULL w kolumnie?

  2. Filtrowane indeksy i dołączone kolumny

  3. Cyfrowa transformacja:wszystko zaczyna się od myślenia o danych

  4. Trendy ScyllaDB – jak użytkownicy wdrażają bazę danych Big Data w czasie rzeczywistym

  5. Jak uniknąć wstawiania zduplikowanych rekordów w zapytaniu SQL INSERT (5 łatwych sposobów)