我目前正在尝试编写一个考勤系统,允许员工使用postgre database
C# and NPGSQL
来检查他们的加班时间。
问题是SUM()和GROUP BY似乎都不会产生任何结果,只会产生错误。这是我桌子的一小部分
我想要达到的目标是获得每天工作时间的总和,而不是每天获得2个或更多的较小值。一旦我得到了这个,我想得到所有日子的工作小时数的总和,然后乘以8乘以独特天数,然后从working_hours的总和中减去它们。
完成所有这些后,我只需要以某种方式访问加班值,然后我可以将它传递给我的DecimalToTime方法。 我的代码如下:
namespace OvertimeCalculator
{
public partial class Form1 : Form
{
public static string DecimalToTime(double time)
{
var getDecimalMinutes = time - Math.Floor(time);
var decimalMinutesToTime = getDecimalMinutes * 60;
return Math.Floor(time) + " Hours and " + Math.Round(decimalMinutesToTime, 0) + " Minutes";
}
private DataSet ds = new DataSet();
private DataTable dt = new DataTable();
public Form1()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
var employee_ID = textBox2.Text;
try
{
var connstring = String.Format("Host=localhost;Username=postgres;Password=123456;Database=test");
var conn = new NpgsqlConnection(connstring);
conn.Open();
var sql = @"SELECT DISTINCT employee_id, worked_hours, name
FROM hr_attendance
WHERE name >= '20150801' AND name < '20161201'
AND employee_id = "
+ employee_ID +
@"AND worked_hours != 0
ORDER BY name";
var da = new NpgsqlDataAdapter(sql, conn);
ds.Reset();
da.Fill(ds);
dt = ds.Tables[0];
dataGridView1.DataSource = dt;
conn.Close();
}
catch (Exception ErrorMessage)
{
MessageBox.Show(ErrorMessage.ToString());
throw;
}
}
}
}