在 HTML 中SQL 按日期排序
- ORDER BY 是 SQL 中的一条关键字,与 SELECT 查询一起使用,从表中按升序或降序获取记录。
- 就像我们对表列中存储的整数和字符串值进行排序一样,我们也可以对 SQL 表列中存储的日期进行排序。
- 默认情况下,所有记录都将按升序排序。要按降序排序记录,使用 DESC 关键字。
让我们看几个实际示例,以更清楚地理解这个概念。我们将使用 MySQL 数据库编写所有查询。
假设我们在 MySQL 数据库中创建了一个名为 employees 的表,其中包含以下数据:
ID | Name | Salary | Joining_Date | DOB |
---|---|---|---|---|
1 | Rohit More | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
4 | Anant Desai | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
示例 1:
编写一个查询以按照员工出生日期的升序显示所有员工的详细信息。
查询语句:
mysql> SELECT *FROM employees ORDER BY DOB;
由于我们想要按照雇员的出生日期升序排序记录,所以我们在“DOB”列上应用了ORDER BY子句。
您将获得以下输出:
ID | Name | Salary | Joining_Date | DOB |
---|---|---|---|---|
4 | Anant Desai | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | Rohit More | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
从以上查询结果可以看出,记录按照出生日期的升序显示。
示例2:
编写一个查询,按照入职日期的降序显示所有员工的详细信息。
查询:
mysql> SELECT *FROM employees ORDER BY Joining_Date DESC;
由于我们希望按照员工加入日期的降序对记录进行排序,所以我们在”Joining_Date”列上应用了带有DESC关键词的ORDER BY子句。
您将获得以下输出:
ID | Name | Salary | Joining_Date | DOB |
---|---|---|---|---|
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | Rohit More | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
4 | Anant Desai | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
从上述查询结果可以看出,记录按照加入日期的降序显示。
示例3:
编写一个查询,按照出生年份的升序显示员工的所有详细信息。
查询:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%Y') AS Year_of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%Y');
由于我们想要根据员工的出生年份按升序对记录进行排序,所以我们应用了ORDER BY子句。DATE_FORMAT()函数应用于列DOB,并使用参数’%Y’来提取’DOB’中的年份。
您将获得以下输出:
ID | Name | Salary | Joining_Date | Year_Of_Birth |
---|---|---|---|---|
4 | Anant Desai | 59000 | 2018-08-27 | 1978 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990 |
1 | Rohit More | 50000 | 2020-02-08 | 1991 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999 |
从上面的查询结果可以看出,记录是根据员工出生年份的升序显示的。
示例4:
编写一个查询来按照员工出生小时的降序显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, Joining_Date, DATE_FORMAT (DOB, '%H') AS Hour_Of_Birth FROM employees ORDER BY DATE_FORMAT (DOB, '%H') DESC;
由于我们想要按员工的出生小时降序对记录进行排序,所以我们使用了带有 DESC 关键字的 ORDER BY 子句。DATE_FORMAT() 函数应用于列 DOB,参数为’%H’,以仅从列 ‘DOB’ 中提取出生小时。
您将获得以下输出:
ID | Name | Salary | Joining_Date | Hour_Of_Birth |
---|---|---|---|---|
2 | Kunal Mohite | 34000 | 2021-01-01 | 19 |
1 | Rohit More | 50000 | 2020-02-08 | 18 |
4 | Anant Desai | 59000 | 2018-08-27 | 15 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 13 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 12 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 02 |
从上述查询中获得的结果显示,记录按照员工出生小时的降序显示。
例子5:
编写一个查询,按照员工加入年份的升序显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, DOB, DATE_FORMAT (Joining_Date, '%Y') AS Year_Of_Joining FROM employees ORDER BY DATE_FORMAT (Joining_Date, '%Y');
因为我们想要按员工加入年份的升序对记录进行排序,所以我们已经应用了ORDER BY子句。DATE_FORMAT()函数被应用于Joining_Date列,并使用参数’%Y’来从’Joining_Date’中提取年份。
你会得到以下输出:
ID | Name | Salary | Year_Of_Joining | DOB |
---|---|---|---|---|
5 | Krishna Sharma | 48000 | 2010 | 1999-03-21 02:14:56 |
3 | Saurabh Jha | 61000 | 2015 | 1983-02-20 12:18:45 |
4 | Anant Desai | 59000 | 2018 | 1978-06-29 15:45:13 |
1 | Rohit More | 50000 | 2020 | 1991-01-28 18:06:08 |
2 | Kunal Mohite | 34000 | 2021 | 1990-05-15 19:10:00 |
6 | Bhavesh Jain | 37000 | 2021 | 1998-08-02 13:00:01 |
从上面的查询结果可以看出,记录按照员工加入年份的升序排列显示。
示例6:
编写一个查询,以员工的加入日期降序排列显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, DAY (Joining_Date) AS Day_Of_Joining, DOB FROM employees ORDER BY DAY (Joining_Date) DESC;
由于我们想要按照员工的入职日期的降序对记录进行排序,所以我们使用了ORDER BY子句和DESC关键字。DAY()函数应用于’Joining_Date’列,以从Joining_Date中提取入职日期的天数。
您将得到以下输出:
ID | Name | Salary | Day_Of_Joining | DOB |
---|---|---|---|---|
4 | Anant Desai | 59000 | 27 | 1978-06-29 15:45:13 |
5 | Krishna Sharma | 48000 | 23 | 1999-03-21 02:14:56 |
1 | Rohit More | 50000 | 8 | 1991-01-28 18:06:08 |
6 | Bhavesh Jain | 37000 | 3 | 1998-08-02 13:00:01 |
2 | Kunal Mohite | 34000 | 1 | 1990-05-15 19:10:00 |
3 | Saurabh Jha | 61000 | 1 | 1983-02-20 12:18:45 |
从上面的查询结果可以看出,记录根据员工的入职日期按照降序显示。
示例 7:
编写一个查询,按照员工的出生日期的升序显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, Joining_Date, DAY (DOB) AS Day_Of_Birth FROM employees ORDER BY DAY (DOB);
由于我们希望按照员工的出生日期的升序对记录进行排序,因此我们应用了ORDER BY子句。在列“DOB”上应用DAY()函数,仅提取DOB中的出生日期。
您将获得以下输出:
ID | Name | Salary | Year_Of_Joining | Day_Of_Birth |
---|---|---|---|---|
6 | Bhavesh Jain | 37000 | 2021-07-03 | 2 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 15 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 20 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 21 |
1 | Rohit More | 50000 | 2020-02-08 | 28 |
4 | Anant Desai | 59000 | 2018-08-27 | 29 |
从上述查询中获得的结果显示,记录根据员工出生日期的升序进行显示。
示例8:
编写一个查询,按员工的出生月份的升序显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (DOB);
ID | Name | Salary | Joining_Date | DOB |
---|---|---|---|---|
1 | Rohit More | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
4 | Anant Desai | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
上述查询所获得的结果显示,记录根据员工的出生月份的升序显示。
示例9:
编写一个查询以按员工加入月份的升序显示所有员工的详细信息。
查询:
mysql> SELECT ID, Name, Salary, Joining_Date, DOB FROM employees ORDER BY MONTH (Joining_Date);
由于我们想要按照员工入职月份的升序对记录进行排序,因此我们应用了ORDER BY子句。MONTH()函数应用于“Joining_Date”列,以仅提取入职日期中的月份。
您将获得以下输出:
ID | Name | Salary | Joining_Date | DOB |
---|---|---|---|---|
2 | Kunal Mohite | 34000 | 2021-01-01 | 1990-05-15 19:10:00 |
1 | Rohit More | 50000 | 2020-02-08 | 1991-01-28 18:06:08 |
3 | Saurabh Jha | 61000 | 2015-05-01 | 1983-02-20 12:18:45 |
6 | Bhavesh Jain | 37000 | 2021-07-03 | 1998-08-02 13:00:01 |
4 | Anant Desai | 59000 | 2018-08-27 | 1978-06-29 15:45:13 |
5 | Krishna Sharma | 48000 | 2010-10-23 | 1999-03-21 02:14:56 |
通过上述查询获得的结果显示,记录按照员工入职月份的升序排序显示。