我有一个工资表,其中我存储了相应的月、年和付款日期的工资详细信息。我在我的ASP.net c#应用程序的gridview中显示这些数据。我想在第一页显示最新的数据。
下面是我的薪资数据库示例:

+------------+-------+----------+------+----------+------+-------------+
| EmployeeID | Gross | TotalDed | Net  |  Month   | Year | paymentdate |
+------------+-------+----------+------+----------+------+-------------+
|       2066 |  2219 |     3750 | 1531 | January  | 2016 | 30.01.2016  |
|       2023 |  2218 |     1649 |  570 | January  | 2016 | 30.01.2016  |
|       2001 |  2219 |     3750 | 1531 | October  | 2015 | 30.10.2015  |
|       2023 |  2218 |     1649 |  570 | October  | 2015 | 30.10.2015  |
|       2034 |  2328 |     5728 | 3400 | October  | 2015 | 30.10.2015  |
|       2023 |  2218 |     1649 |  570 | November | 2015 | 30.11.2015  |
|       2030 |  2219 |     1550 |  669 | November | 2015 | 30.11.2015  |
|       2047 |  2218 |     1649 |  570 | November | 2015 | 30.11.2015  |
|       2031 |  2219 |     8450 | 6231 | December | 2015 | 30.12.2015  |
|       2057 |  2219 |     8450 | 6231 | December | 2015 | 30.12.2015  |
|       2023 |  2218 |     1649 |  570 | December | 2015 | 30.12.2015  |
+------------+-------+----------+------+----------+------+-------------+

我希望此表以分页方式显示在gridview中。
 String sQuery = @"SELECT EmployeeID,GrossSalary,TotalDed,NetSalary,Month,Year,paymentdate
                                    FROM  salary ";

                MySqlDataAdapter ada = new MySqlDataAdapter(sQuery, GlobalCS.objMyCon);

                using (DataTable dt = new DataTable())
                {
                    ada.Fill(dt);
                    GridView1.DataSource = dt;
                    GridView1.DataBind();
                }

但它显示的是最新到最后一页。
如果我用
SELECT EmployeeID,GrossSalary,TotalDed,NetSalary,Month,Year,paymentdate FROM salary order by Paymentdate
然后显示2016年1月、2016年10月、2016年11月、2016年12月。
但我想展示的是2016年1月、2015年12月、2015年11月、2015年10月
我试过了
SELECT EmployeeID,GrossSalary,TotalDed,NetSalary,Month,Year,paymentdate FROM  salary order by month and year

输出是所有数据的混合。那我怎么才能得到呢?

最佳答案

如果Paymentdatestring数据类型,则order by Paymentdate将结果按Lexicographical order顺序排列。
在订货前将Paymentdate转换为date

SELECT
  `EmployeeID`,
  `GrossSalary`,
  `TotalDed`,
  `NetSalary`,
  `Month`,
  `Year`,
  `paymentdate`
FROM  salary
order by STR_TO_DATE(`paymentdate`,'%d.%m.%Y') DESC

sql fiddle demo
注意:-将date数据存储在string数据类型而不是date数据类型中是一种不好的做法

关于c# - 在mysql和gridview中按年份和日期排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34627469/

10-10 08:49