So sánh tháng năm trong sql

1 câu trả lời

26 Tháng 1, 2016 bởi Mr. Cùi Bắp (5,140 điểm) sửa nội dung 26 Tháng 1, 2016 bởi Mr. Cùi Bắp

Code C# (Bạn có thể dùng phần mêm để convert sang VB.NET)

TimeSpan ts = DateTime.Now.Subtract(ndh); //Lấy ngày thời gian hiện tại trừ ngày đến hẹn double so_ngay = ts.TotalDays() ;//Tổng số ngày còn lại if (so_ngay <= 2) { //Thông báo }

Nếu bạn muốn thực hiện luôn trên SQL thì mình có 1 gợi ý dành cho bạn:

declare @ndh date = '2016-01-25' --Ngày đến hẹn declare @so_ngay int = day(getdate()) - day(@ndh) --Lấy ngày hệ thống trên SQL trừ ngày đến hẹn select case when  @so_ngay <= 2 then N'Còn ' + REPLACE(STR(@so_ngay,2),' ','0') + N' ngày nữa là ông A đến hẹn'  else '' end --Hiển thị thông báo ngược lại thì trả về rỗng

27 Tháng 1, 2016 bởi zcomputerz (240 điểm)

Cám ơn bạn rất nhiều! Câu hỏi của mình đã hỏi thiếu ý rồi, mình bổ sung nha. Nếu còn 02 ngày nữa là đến hẹn thì chương trình hiện thông báo của cả dòng đó. tức là lấy ngày hệ thống trừ ngày đến hẹn nếu còn 02 ngày nữa thì thông báo cũng được lấy từ SQL ra để thông báo, lấy thông tin của cả dòng đó hiện lên thông báo. VD dòng đó có hoten, sodt, diachi. thì thông báo sẽ là "còn 02 ngày nữa là hoten, sodt, diachi sẽ đến hẹn". Mình hỏi hơi lòng vòng mong bạn thông cảm.

Datediff ( Interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )

Cú pháp hàm Datediff có các đối số sau đây:

Mẹo: Trong Access 2010, bộ dựng biểu thức có thông minh, vì vậy bạn có thể thấy các đối số của biểu thức yêu cầu của bạn.

Đối số

Mô tả

interval

Bắt buộc. Biểu thức chuỗi là khoảng thời gian bạn sử dụng để tính toán sự khác biệt giữa date1 và date2.

date1, date2

Bắt buộc. Biến thể (ngày). Hai ngày bạn muốn sử dụng để tính toán.

ngày_đầu_tiên_của_tuần

Tùy chọn. hằng xác định ngày đầu tiên trong tuần. Nếu không được xác định, sẽ giả định là Chủ Nhật.

tuần_đầu_tiên_của_năm

Tùy chọn. Hằng số chỉ định tuần đầu tiên của năm. Nếu không được xác định, giả định tuần đầu tiên của năm là tuần có ngày 01 Tháng Một.

Thiết đặt

Khoảng thời gian tham đối có các thiết đặt này:

Thiết đặt

Mô tả

yyyy

Năm

q

Quý

m

Tháng

y

Ngày trong năm

d

Ngày

w

Weekday

ww

Tuần

h

Giờ

n

Phút

.

Giây

Đối số firstdayofweek có các thiết đặt này:

Hằng số

Giá trị

Mô tả

vbUseSystem

0

Sử dụng thiết đặt API NLS.

vbSunday

1

Chủ Nhật (mặc định)

vbMonday

2

Thứ Hai

vbTuesday

3

Thứ ba

vbWednesday

4

Thứ Tư

vbThursday

5

Thứ Năm

vbFriday

6

Thứ Sáu

vbSaturday

7

Thứ Bảy

Hằng số

Giá trị

Mô tả

vbUseSystem

0

Sử dụng thiết đặt API NLS.

vbFirstJan1

1

Bắt đầu với tuần trong đó ngày 1 tháng 1 xảy ra (mặc định).

Vbfirstdays

2

Bắt đầu với tuần đầu tiên có ít nhất bốn ngày trong năm mới.

vbFirstFullWeek

3

Bắt đầu với tuần đầy đủ đầu tiên của năm.

Chú thích

Bạn có thể sử dụng hàm Datediff để xác định có bao nhiêu khoảng thời gian đã xác định tồn tại giữa hai ngày. Ví dụ, bạn có thể sử dụng Datediff để tính toán số ngày giữa hai ngày, hoặc số tuần giữa ngày hôm nay và cuối năm.

Để tính toán số ngày giữa date1 và date2, bạn có thể dùng một ngày trong năm ("y") hoặc ngày ("d"). Khi khoảng thời gian là ngày trong tuần ("w"), datediff trả về số tuần giữa hai ngày. Nếu date1 té ngã vào thứ hai, datediff sẽ đếm số thứ hai cho đến khi date2. Nó đếm date2 nhưng không phải date1. Tuy nhiên, nếu khoảng cách là tuần ("WW"), hàm datediff trả về số tuần lịch giữa hai ngày. Nó đếm số ngày chủ nhật giữa date1 và date2. Datediff đếm date2 nếu nó rơi vào Chủ Nhật; nhưng nó không đếm date1, ngay cả khi nó không rơi vào chủ nhật.

Nếu date1 tham chiếu đến một điểm cuối cùng trong thời gian Date2, hàm datediff trả về một số âm.

Đối số firstdayofweek ảnh hưởng đến các phép tính sử dụng biểu tượng khoảng "w" và "WW".

Nếu date1 hoặc date2 là một ký tự ngày, năm đã xác định sẽ trở thành một phần thường trực của ngày đó. Tuy nhiên, nếu date1 hoặc date2 được đặt trong dấu nháy kép (""), và bạn bỏ qua năm, năm hiện tại được chèn vào mã của bạn mỗi khi biểu thức date1 hoặc date2 được đánh giá. Điều này giúp bạn có thể viết mã có thể được sử dụng trong các năm khác nhau.

Khi so sánh ngày 31 tháng 12 đến 1 tháng một của năm kế thừa ngay lập tức, Datediff for year ("yyyy") trả về 1, ngay cả khi chỉ có một ngày đã trôi qua.

Lưu ý: Đối với date1 và date2, nếu thiết đặt thuộc tính lịch là Gregorian, ngày cung cấp phải được dương lịch. Nếu lịch là Hijri, ngày đã cung cấp phải là Hijri.

Ví dụ về truy vấn DateDiff

Biểu thức

Kết quả

CHỌN DateDiff ("yyyy",

01/01/2010 #, [DateofSale]) là Expr1 từ ProductSales;

Trả về chênh lệch giữa Date2 và Date1 (xem xét Date1 như cũ nhất và Date2 như mới nhất) là số ' năm '. Kết quả: sự khác biệt giữa các giá trị trong trường "DateofSale" và ngày "01/01/2010" làm số ' năm '.

CHỌN DateDiff ("q", [DateofSale], Date ()) là DaysSinceSale từ ProductSales;

Trả về sự khác biệt giữa ngày hệ thống và "DateofSale" là số ' quý ' (dựa trên năm Calendar) và hiển thị trong cột "DaysSinceSale". trả về chênh lệch giữa ngày hệ thống và "DateofSale" là số ' tháng ' và hiển thị trong cột "DaysSinceSale".

CHỌN DateDiff ("y"; [DateofSale], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateofSale" là số ' ngày ' và hiển thị trong cột "DaysSinceSale".

CHỌN DateDiff ("d", [DateofSale], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateofSale" là số ' ngày ' và hiển thị trong cột "DaysSinceSale".

CHỌN DateDiff ("w", [DateofSale], Date ()) là DaysSinceSale từ ProductSales;

Trả về sự khác biệt giữa ngày hệ thống và "DateofSale" là số ' ngày trong tuần ' và hiển thị trong cột "DaysSinceSale". Nếu "DateofSale" té ngã vào thứ hai, DateDiff đếm số thứ hai cho đến ngày hệ thống. Nó đếm ngày hệ thống nhưng không phải là giá trị trong "DateofSale".

CHỌN DateDiff ("WW"; [DateofSale], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateofSale" là số "tuần lịch" và hiển thị trong cột "DaysSinceSale". Nó đếm số chủ nhật giữa "DateofSale" và "ngày hệ thống". Nó sẽ đếm ngày hệ thống nếu nó rơi vào ngày Chủ Nhật; nhưng nó không đếm được "DateofSale", ngay cả khi nó không rơi vào chủ nhật.

CHỌN DateDiff ("h", [DateTime], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateTime" là số ' giờ ' và hiển thị trong cột "DaysSinceSale".

CHỌN DateDiff ("n", [DateTime], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateTime" là số ' phút ' và hiển thị trong cột "DaysSinceSale".

CHỌN DateDiff ("s", [DateTime], Date ()) là DaysSinceSale từ ProductSales;

Trả về chênh lệch giữa ngày hệ thống và "DateTime" là số ' giây ' và hiển thị trong cột "DaysSinceSale".

Biểu thức ví dụ

Sử dụng hàm DateDiff trong một biểu thức Bạn có thể sử dụng hàm Datediff bất cứ nơi nào bạn có thể sử dụng biểu thức. Ví dụ, giả sử bạn có một biểu mẫu mà bạn sử dụng để hoàn thành đơn hàng của khách hàng. Trong bảng đơn hàng, bạn có một trường có tên là ReceiveBefore có chứa ngày mà khách hàng cần nhận thứ tự. Bạn có thể sử dụng hàm Datediff bằng một hộp văn bản trên biểu mẫu để hiển thị số ngày bên trái trước thứ tự phải đóng tàu.

Giả sử phải mất mười ngày để gửi bất kỳ thứ tự nào, bạn đặt thuộc tính nguồn điều khiển của hộp văn bản như sau:

\= DateDiff ("d", Now (), [đơn hàng]. [ ReceiveBefore])-10

Khi bạn mở biểu mẫu trong dạng xem biểu mẫu, hộp văn bản Hiển thị số ngày bên trái trước thứ tự phải đóng tàu. Nếu khách hàng có ít hơn 10 ngày trước khi khách hàng cần nhận đơn hàng, thì số lượng trong hộp văn bản là âm và cho biết có bao nhiêu ngày cuối thứ tự sẽ xảy ra nếu nó được chuyển ngay lập tức.

Ví dụ về VBA

Sử dụng hàm Datediff trong mã VBA

Ví dụ này sử dụng hàm Datediff để hiển thị số ngày giữa một ngày đã cho và ngày hôm nay.

________0

Bạn cần thêm trợ giúp?

Bạn muốn xem các tùy chọn khác?

Khám phá các lợi ích của gói đăng ký, xem qua các khóa đào tạo, tìm hiểu cách bảo mật thiết bị của bạn và hơn thế nữa.

Cộng đồng giúp bạn đặt và trả lời các câu hỏi, cung cấp phản hồi và lắng nghe ý kiến từ các chuyên gia có kiến thức phong phú.