我有工资表,其中我存储工资详情与相应的月份和年份以及付款日期。我在我的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月16日,2016年10月,2016年11月2016年12月。 但我想要展示的是2015年12月,2015年12月,2015年11月,2015年10月 我试过了
SELECT EmployeeID,GrossSalary,TotalDed,NetSalary,Month,Year,paymentdate FROM salary order by month and year
输出是所有数据的混合。那我该怎么办呢?
答案 0 :(得分:0)
如果您的Paymentdate
为string
数据类型,则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
注意: - 以date
数据类型而不是string
数据类型
date
数据是一种不好的做法