Instead of storing this on the database each day I would calculate this each time I am displaying the data, and only store the effort when the project is closed. You do not need a separate function for this in your c# code - you can do as part of the SQL statement e.g. as in this demo
declare @demo table (item int identity(1,1), startdate date);
insert into @demo(startdate) values
('2022-01-13'), ('2022-04-01');
SELECT item, startdate, DATEDIFF(DAY, startdate, GETDATE())
from @demo;
This will give the difference in days from the start date of each row up to but not including today (or not including the start date depending on how you view it).
1 2022-01-13 97
2 2022-04-01 19
Another point, congratulations on using a Parameterized Query, but why do you also use string concatenation? What is wrong with
SqlCommand cmd = new SqlCommand("Update project_table SET (project_status = @projectstatus, project_efforts=@project_efforts) where project_startdate = @currentDate", con);
cmd.Parameters.AddWithValue("@projectstatus", "Started");
cmd.Parameters.AddWithValue("@project_efforts", result);
cmd.Parameters.AddWithValue("@currentdate", currentdate);