Các hàm thao tác trên kiểu dữ liệu thời gian

Một phần của tài liệu Giáo trình SQL và PL/SQL Cơ bản pdf (Trang 33 - 34)

8. Hiển thị tên nhân viên, lương một năm (ANUAL_SAL ), thưởng sao cho lương lớn hơn thưởng và nghề

4.2.3.Các hàm thao tác trên kiểu dữ liệu thời gian

Hàm SQL thao tác trên kiểu dữ liệu là thời gian.

Hàm SQL Diễn giải

MONTHS_BETWEEN(d1, d2) Cho biết só tháng giữa ngày d1 và d2.

ADD_MONTHS(d,n) Cho ngày d thêm n tháng.

NEXT_DAY(d, char ) Cho ngày tiếp theo ngày d có thứ chỉ bởi char.

LAST_DAY(d) Cho ngày cuối cùng trong tháng chỉ bởi d.

Ví dụ hàm MONTH_BETWEEN(d1, d2)

SELECT MONTHS_BETWEEN( SYSDATE, HIREDATE), MONTHS_BETWEEN('01-01-2000','05-10-2000')

FROM EMP

WHERE MONTHS_BETWEEN( SYSDATE,HIREDATE)>240;

MONTHS_BETWEEN(SYSDATE,HIREDATE) TWEEN('01-01-2000','05-10-2000') --- --- 241.271055 -9.1290323 241.206539 -9.1290323 243.367829 -9.1290323 Ví dụ hàm ADD_MONTHS(d,n)

SELECT HIREDATE, ADD_MONTHS(HIRE,3), ADD_MONTHS(HIREDATE,-3) FROM EMP

WHERE DEPTNO=20;

HIREDATE ADD_MONTHS ADD_MONTHS --- --- --- 02-04-1981 02-07-1981 02-01-1981 03-12-1981 03-03-1982 03-09-1981 17-12-1980 17-03-1981 17-09-1980 09-12-1982 09-03-1983 09-09-1982 12-01-1983 12-04-1983 12-10-1982 Ví dụ hàm NEXT_DAY(d, char )

SELECT HIREDATE, NEXT_DAY(HIREDATE,’FRIDAY’), NEXT_DAY(HIREDATE,6) FROM EMP

WHERE DEPTNO = 10;

HIREDATE NEXT_DAY(H NEXT_DAY(H --- --- --- 17-11-1981 20-11-1981 20-11-1981 09-06-1981 12-06-1981 12-06-1981 23-01-1982 29-01-1982 29-01-1982

Ví dụ hàm LAST_DAY(d)

SELECT SYSDATE, LAST_DAY(SYSDATE), HIREDATE, LAST_DAY(HIREDATE), LAST_DAY(’15-01-2001’)

FROM EMP

WHERE DEPTNO =20;

SYSDATE LAST_DAY(S HIREDATE LAST_DAY(H LAST_DAY(' --- --- --- --- --- 28-03-2001 31-03-2001 02-04-1981 30-04-1981 31-01-2001 28-03-2001 31-03-2001 03-12-1981 31-12-1981 31-01-2001 28-03-2001 31-03-2001 17-12-1980 31-12-1980 31-01-2001 28-03-2001 31-03-2001 09-12-1982 31-12-1982 31-01-2001

28-03-2001 31-03-2001 12-01-1983 31-01-1983 31-01-2001

Một số hàm khác có thể áp dụng cho kiểu ngày

Hàm SQL Diễn giải

ROUND(date1) Trả về ngày date 1 tại thời điểm giữa trưa 12:00 AM

ROUND(date1,’MONTH’) Nếu date 1 nằm trong nửa tháng đầu trả về ngày đầu tiên của thàng, ngược lại sẽ trả về ngày đầu tiên của tháng sau.

ROUND(date1,’YEAR’) Nếu date 1 nằm trong nửa năm đầu trả về ngày đầu tiên của thàng, ngược lại sẽ trả về ngày đầu tiên của năm sau.

TRUNC(date1, ’MONTH’) Trả về ngày đầu tiên của tháng chứa date1

TRUNC(date1, ’YEAR’) Trả về ngày đầu tiên của năm chứa date1

(adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu Giáo trình SQL và PL/SQL Cơ bản pdf (Trang 33 - 34)