Hỏi đáp

Chia sẻ kiến thức, cùng nhau phát triển

mọi người cho mình hỏi về cách tính thời gian trong sql và winform

01:34 25-10-2017 1.146 lượt xem 5 bình luận 20:51 30-10-2017

cả nhà cho e hỏi cách xây dựng csdl cũng như xử lý trên winform bài toán như sau:

nhập vào ngày ban đầu t1 sau khi cộng thêm 1 khoảng thời gian tìm ra ngày t2 sau đó cộng hoặc trừ thêm 1 khoảng thời gian thì dk t3 

vd như nhập vào ngày: 20/10/2017 cộng thêm: 1 ngày  được: 21/10/2017  rồi trừ đi 2 ngày thì được: 19/10/2017 ......

20/10/2017 + 1 ngày = 21/10/2017

21/10/2017 - 2 ngày = 19/10/2017

19/10/2017 + 4 ngày =  23/10/2017 

...... cộng trừ thời gian và ra ngày mới ......

có cao nhân nào chỉ giáo với e cám ơn nhiều!

Bình luận

Để bình luận, bạn cần đăng nhập bằng tài khoản Howkteam.

Đăng nhập
hnguyen đã bình luận 11:59 29-10-2017

Code SQL của bạn đây

SELECT  CONVERT(VARCHAR(10), CONVERT(DATE, '2017-10-20'), 103) AS NhapNgay ,
        N'1 ngày' AS NhapThoiGianTang1 ,
        CONVERT(VARCHAR(10), DATEADD(DAY, 1, '2017-10-20'), 103) KetQuaSauTang1 ,
        N'2 ngày' AS NhapThoiGianTang2 ,
        CONVERT(VARCHAR(10), DATEADD(DAY, -2, DATEADD(DAY, 1, '2017-10-20')), 103) KetQuaSauTang2

Vì bạn yêu cầu nên mình dùng hàm CONVERT để format lại ngày khi trả về, nhưng mình góp ý với bạn nên giữ kiểu DATE trong câu lệnh SELECT, và format lại khi show kết quả ra cho người xem.

Còn về code C#, vì không biết bạn get và bind dữ liệu theo cách nào nên mình không giúp được. Nhưng nếu bạn đang sử dụng DataTable để chứa dữ liệu và DataGridView để hiện thì có thể làm như thế này

 DataTable table = getData();
 dataGridView.DataSource = table;

 

hnguyen đã bình luận 10:11 25-10-2017

Với SQL Server bạn có thể dùng hàm DATEADD để cộng trừ thời gian. Ví dụ:

SELECT DATEADD(DAY,-2,DATEADD(DAY,1,'2017-10-20'))

Với winform (mình đang dùng C# nên đây là code C# nha bạn, các ngôn ngữ khác tương tự thôi.) bạn dùng DateTime::AddDays(). Có các hàm khác như AddYears(), AddMinutes() ... nhưng bạn đang muốn cộng trừ ngày nên dùng AddDays(). Ví dụ

DateTime date = new DateTime(2017, 10, 20);
date = date.AddDays(1).AddDays(-2);

Bạn có thể tìm thấy hướng dẫn chi tiết về cách sử dụng các hàm trên nếu vào google.com và tìm theo từ khóa "dateadd sql", "adddays c#". Chỉ cần chịu khó tìm một tí là có rất nhiều cách cho bạn lựa chọn và phù hợp với yêu cầu của bạn, hai cách trên mình thường dùng nên góp ý thôi.

Câu hỏi mới nhất