Đánh giá chủ đề:
  • 4 Votes - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tính Toán thời gian giữa hai thời điểm với datediff
#1
Đôi khi bạn có nhu cầu tính số ngày, số tháng, số quý giữa hai thời kỳ nhằm phục vụ báo cáo.Cụ thể tính tiền trợ cấp hoặc bảo hiểm xã hội!
Mình xin giới thiệu hàm: DateIff( loại, từ ngày, đến ngày)
bạn dùng hàm datediff("d", date1, date2) để tính số ngày
bạn dùng hàm datediff("m", date1, date2) để tính số tháng
bạn dùng hàm datediff("q", date1, date2) để tính số quý ....

Loại ta có:
yyyy Year
q Quarter
m Month
y Day of year
d Day
w Weekday
ww Week
h Hour
n Minute
s Second

sau khi tính duoc số tháng ban dùng dấu chia ngược "\" hoặc dùng hàm roud() kết hợp với lệnh mod để tính ra số năm và số tháng


ví dụ: trên báo cáo BHXH thời gian đóng BHXH cua Nhân viên A là ngày 15 tháng 01 năm 1980 đến ngày 15 tháng 6 năm 1982 là 2 năm 5 tháng ban làm như sau:

datediff("m",#01/15/1980#,#06/15/1982#) --> cho kết quả 29
hoặc
datediff("m", dateserial(1980,01,15), dateserial(1982,06,15)) --> cho kết quả 29

để tìm ra số năm ta có thể lấy 29\12 = 2 hoặc fix(29/12) = 2
để tinh số tháng ta lấy 29 mod 12 = 5
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Cafe Via He , haquocquan , helloworld , KínhCận , hocaccess , lenga2212 , sorryikillyo , MieuNu
#2
Mình cũng đang học nên chưa biết gì nhiều,
Chữ ký của feraly Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#3
Bác ơi.Cho e hỏi.Vậy sau khi tìm ra năm/tháng/ngày.Ví dụ 0 năm 1 tháng 2 ngày muốn đọc 1 tháng 2 ngày,1năm 0 tháng 3 ngày mún đọc 1 năm 3 ngày...thì làm như thế nào ạ,dùng hàm nào ạ???.Em mới nghiên cứu access mà đề tài của em bị đụng ngay chỗ này chưa có cách giải quyết....hic.May quá gặp bài này...Thanks bác trước
Chữ ký của helloworld Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#4
(27-12-10, 07:00 PM)helloworld Đã viết: Bác ơi.Cho e hỏi.Vậy sau khi tìm ra năm/tháng/ngày.Ví dụ 0 năm 1 tháng 2 ngày muốn đọc 1 tháng 2 ngày,1năm 0 tháng 3 ngày mún đọc 1 năm 3 ngày...thì làm như thế nào ạ,dùng hàm nào ạ???.Em mới nghiên cứu access mà đề tài của em bị đụng ngay chỗ này chưa có cách giải quyết....hic.May quá gặp bài này...Thanks bác trước

Dùng hàm Iff thôi bạn ạ. Mà mình chưa hiểu đọc là đọc trong hoàn cảnh nào!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#5
Vâng.Thanks bác.Đề tài của e là quản lý phạm nhân.yêu cầu phải đọc án còn lại và án đã thi hành tính đến thời điểm hiện tại.Tính thì e dùng hàm datediff như bác đã hướng dẫn đã tính được.Còn đọc theo ngày tháng năm thì e bí.Tại ko rành VB.Trước làm bên ễcll cũng dùng if để đọc thì đơn giản.Đụng trúng a VB này..botay.Bác hướng dẫn e kỹ hơn đc ko? Thanks b truoc
mà dùng iif thì dùng trực tiếp trong form,report lun hả bác?Không còn viết function sao?
Chữ ký của helloworld Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#6
Vì VBA không hỗ trợ unicode nên gần như pó tay. Nên bạn kết hợp các hàm trong query thôi. Hàm IIF tương đường với hàm if của Excel
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn hocaccess
#7
Thật ra em chì cần đọc tắt .Ví dụ như xN yT zNg thôi ạ.Vậy bác có hàm VBA có thể giải quyết được vấn đề của e ko a?Còn nếu dùng query thì kết hợp những hàm nào.Mong bác giúp em trót lần nàyTongue_smile
Chữ ký của helloworld Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#8
Nếu bạn tìm ra năm tháng ngày rồi thì cứ như thế này:
Mã:
Function docngay(ngay as Integer,thang as integer,nam as integer) as String
Dim S as String
If ngay>0 then
S= ngay & " ngay "
End if
If thang>0 then
S = S & " thang "
end if
If nam>0 then
S=S &  " Nam "
End if
docngay= S

end Function

Giờ không cần biết bạn làm cách nào để có số ngày. tháng, năm. Khi nào cần đọc thì cứ gọi hàm đọc ngày trên :
=docngay 2, 1, 0 => 2 ngày 1 tháng

= docngay 2, 0, 1 => 2 ngày 1 năm
...
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan , helloworld , hocaccess , thuc1605
#9
Thanks bác nhìu nhìu lắm lắm ợ.Mừng quá cơ
Chữ ký của helloworld Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#10
Có hàm datediff này tính quá hạn nợ là số 1 tìm đã lâu ai ngờ nằm ở web mình tham gia bấy lâu hic, cám ơn chủ thớt nhiều nhé!
Chữ ký của KínhCận Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn Admin


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hàm] Hàm Work_Days để tính thời gian làm việc giữa BegDate và EndDate Xuân Thanh 1 2,335 20-03-13, 11:37 AM
Bài mới nhất: hoaiitktv

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ