sql >> Databasteknik >  >> RDS >> Database

Hur man jämför datum i SQL

I det här avsnittet kommer vi att lära oss om hur datum kan jämföras i SQL.

  • Vi kan jämföra vilket slumpmässigt datum som helst med ett annat datum lagrat i en kolumn i en tabell.
  • Denna jämförelse kan göras med hjälp av jämförelseoperatorer sådana >, <,>=,>=, =.
  • datumet () Funktionen används också i SQL för att jämföra två olika datum.
  • Datatypen DATE tillåter lagring av datum i SQL-tabeller i formatet "ÅÅÅÅ-MM-DD". Men när du skriver frågan för att jämföra datumen, kan datumet som ska skrivas i frågan vara i ett avslappnat strängformat.
  • Enligt det avslappnade strängformatet kan olika delar av datumet separeras med vilket tecken som helst däremellan. MySQL tillåter också att ett datum skrivs i en fråga utan någon separator, förutsatt att strängen som är skriven som ett datum bildar ett vettigt datum.

Exempel 1:

Skriv en fråga för att hitta alla anställda vars anslutningsdatum är längre än eller samma som den 5 maj 1999.

Skapa en databas med namnet "dbemployee ” med en tabell ’anställd’ skapad i den. Vi kommer att överväga den här tabellen och databasen för alla följande exempel.

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)

Vi har skapat en ny databas med namnet 'dbemployee', och med kommandot 'USE dbemployee' har vi valt denna databas. Sedan, med kommandot 'CREATE TABLE', har vi skapat en tabell 'employee' i databasen 'dbemployee'.

Nu kommer vi att infoga data i den ovan skapade tabellen.

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)

Efter att ha infogat data framgångsrikt i tabellen kommer vi nu att hämta alla poster i en tabell.

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)

Låt oss nu skriva en fråga för den givna problemformuleringen.

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

Utdata:

+--------+------------------+------------+------------+------------------+
| 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)

Det finns tre anställda med medarbetar-id 1, 2 och 3 vars anslutningsdatum är längre än 5 maj 1999.

Exempel 2:

Skriv en fråga för att hitta alla anställda vars anslutningsdatum är mindre än eller samma som den 5 maj 1999.

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

Utdata:

+--------+-------------------+------------+------------+------------------+
| 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)

Två anställda med anställningsnummer 4 och 5 vars anslutningsdatum är mindre än 5 maj 1999.

Exempel 3:

Skriv en fråga för att hitta alla anställda vars anslutningsdatum är samma som 8 augusti 1987.

mysql> SELECT *FROM employee WHERE Emp_Joining_Date = 19870818;

Utdata:

+--------+-------------+----------+------------+------------------+
| 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)

Det finns bara en anställd med anställd id 4 vars anslutningsdatum är lika med den 18 augusti 1987.

Använder date()

Exempel 4:

Skriv en fråga med funktionen datum () för att hitta alla anställda vars anslutningsdatum är detsamma som 26 juni 2021.

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

Utdata:

+--------+------------------+----------+------------+------------------+
| 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)

Det finns bara en anställd med anställd-id 2 vars anslutningsdatum är lika med 26 juni 2021.


  1. Oracle SID och tjänstens namn; anslutningsproblem

  2. Itererar över heltal[] i PL/pgSQL

  3. Datatyp för lagring av ip-adress i SQL Server

  4. Hur man återställer Amazon RDS Master User Password