اوراکل 23c – پشتیبانی توابع CEIL و FLOOR از دیتاتایپهای DATE، TIMESTAMP و INTERVAL

همانطور که می دانید توابع CEIL و FLOOR برای round کردن(گرد کردن) اعداد استفاده می شوند به این صورت که تابع CEIL اعداد را به سمت بالا گرد می کند و تابع FLOOR هم برای گردن کردن به سمت پایین استفاده می شود.

SQL> select floor(6.45) from dual;
FLOOR(6.45)
-----------
          6
SQL> select CEIL(6.45) from dual;
CEIL(6.45)
----------
         7

از نسخه 23c می توان از توابع CEIL و FLOOR برای انواع داده DATE، TIMESTAMP و INTERVAL هم استفاده کرد. برای مثال می توانیم برای تاریخ 2024/02/05 ماه را به سمت بالا گرد کنیم که در این صورت این تاریخ به 2024/03/01 رند خواهد شد.

ممکن است نیاز باشد روز، سال، ساعت، دقیقه و … را رند کنیم که در این صورت باید در آرگومان دوم این توابع، فرمت مورد نظر را تعیین کنیم از طریق مقادیری چون MM، DD، HH24و …

مثالهای زیر برای نوع داده Date هستند:

SQL> SELECT CEIL(TO_DATE ('2024/02/05','YYYY/MM/DD'), 'MM') AS Month_CE,FLOOR(TO_DATE ('2024/02/05','YYYY/MM/DD'), 'MM') AS Month_FL;
MONTH_CE                    MONTH_FL
-------------------   -------------------
2024/03/01 00:00:00   2024/02/01 00:00:00
SQL> SELECT CEIL(TO_DATE ('2024/02/05','YYYY/MM/DD'), 'YYYY') AS YEAR_CE,FLOOR(TO_DATE ('2024/02/05','YYYY/MM/DD'), 'YYYY') AS YEAR_FL;
YEAR_CE                 YEAR_FL
------------------- -------------------
2025/01/01 00:00:00  2024/01/01  00:00:00

مقدار پیش فرض برای آرگومان دوم، DD است:

SQL> SELECT CEIL(TO_DATE ('2024/02/05 08:05:15','YYYY/MM/DD HH24:MI:SS')) AS Default_CE,FLOOR(TO_DATE ('2024/02/05 08:05:15','YYYY/MM/DD HH24:MI:SS')) AS Default_FL;
DEFAULT_CE          DEFAULT_FL
------------------- -------------------
2024/02/06 00:00:00 2024/02/05 00:00:00

در ادامه مثالهایی را برای INTERVAL مشاهده خواهید کرد:

SQL> SELECT FLOOR(to_dsinterval('3 18:47:32'), 'HH24') as interval_HH24_FL,CEIL(to_dsinterval('3 18:47:32'), 'HH24') as interval_HH24_CE;
INTERVAL_HH24_FL                    INTERVAL_HH24_CE                   
------------------------------- ------------------------------- 
+000000003 18:00:00.000000000    +000000003 19:00:00.000000000   
SQL> SELECT FLOOR(to_dsinterval('3 18:47:32'), 'DD') as interval_DD_FL,CEIL(to_dsinterval('3 18:47:32'), 'DD') as interval_DD_CE;
INTERVAL_DD_FL                      INTERVAL_DD_CE
-------------------------------   -------------------------------
+000000003 00:00:00.000000000     +000000004 00:00:00.000000000
SQL> SELECT FLOOR(INTERVAL '+99-11' YEAR(2) TO MONTH, 'YEAR') as YEAR_FL;
YEAR_FL
----------------------------------
+000000099-00

 

ارائه خدمات مشاوره ، پشتیبانی و نصب و راه اندازی پایگاه داده اوراکل در سراسر کشور...................... تلفن: 09128110897 ایمیل:vahidusefzadeh@gmail.com

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *