Oracle日期运算,你知多少?
日常工作对日期处理不多,最近因为需要设计一个时间维表,借这个机会,整理下常用的日期处理运算方法。 Oracle提供了几个基本的日期处理函数 函数 描述 ADD_MONTHS(DATE,COUNT) 指定日期 date上增加 count个月 LAST_DAY(DATE) 返回日期 date所在月的最后一天
日常工作对日期处理不多,最近因为需要设计一个时间维表,借这个机会,整理下常用的日期处理运算方法。
Oracle提供了几个基本的日期处理函数
函数 |
描述 |
ADD_MONTHS(DATE,COUNT) |
指定日期date上增加count个月 |
LAST_DAY(DATE) |
返回日期date所在月的最后一天 |
MONTHS_BETWEEN(DATE1,DATE2) |
返回相差多少个月 |
NEW_TIME(DATE,’THIS’,’OTHER’) |
将时间从this时区转换到other时区 |
NEXT_DAY(DATE,’DAY’) |
返回指定日期或之后的第一个星期几的日期,’day’为星期几,也可以为1-7的数字,1代表星期日,以此类推 |
SYSDATE |
获取系统当前日期至 |
CURRENT_TIMESTAMP() |
当前时间和日期值 |
示例代码:
select add_months(sysdate,2) as "两个月后的日期", last_day(sysdate) as "本月最后一天", months_between(sysdate, to_date('2012-12-20','yyyy-mm-dd'))as "月份差", new_time(sysdate,'CST','EST') as "北京时间转换为东部时间", next_day(sysdate,1) as "下个周日的日期", sysdate as "当前系统时间" from dual
返回结果:
两个月后的日期 |
8/27/2012 15:56 |
本月最后一天 |
6/30/2012 15:56 |
月份差 |
-5.752772177 |
北京时间转换为东部时间 |
6/27/2012 16:56 |
下个周日的日期 |
7/1/2012 15:56 |
当前系统时间 |
6/27/2012 15:56 |
事实上,往往令人头疼是那些基于时间单位的计算,如年(Year),季(Quarter),月(Month),周(Week),天(Day),时(Hour),分(Minute),秒(Second),毫秒(Millisecond)。(毫秒暂不讨论)
得到各单位的时间,我们通常有两种方法:
例:
TRUNC(SYSDATE,’MI’) 得到精确至‘分’的日期时间
TO_CHAR(SYSDATE,’MI’) 获取时间的‘分’的值
基于年的运算:
--得到一年的第一天 select trunc(sysdate,'y') from dual; --得到一年的最后一天 select add_months(trunc(sysdate,'yyyy'),12) -1 from dual; --得到一年的每一天 select trunc(sysdate,'yyyy') + rn -1 date0 from (select rownum rn from all_objects where rownum <p><br> </p> <h2 id="基于季度的运算">基于季度的运算:</h2> <p></p><pre class="brush:php;toolbar:false">--本季度第一天 select to_char(trunc(sysdate,'q'),'yyyy-mm-dd') from dual; --本季度最后一天 select add_months(trunc(sysdate,'q'),3) -1 from dual; --上个季度最后一天(可以用本季度第一天减去1得到) select to_char(trunc(sysdate,'q') -1,'yyyy-mm-dd') from dual; --上个季度第一天(本季度第一天减 3个月) select to_char(add_months(trunc(sysdate,'q'), -3),'yyyy-mm-dd') from dual; --上个季度第一天(本季度减一个月之后的月份的最后一天) select to_char(last_day(add_months(trunc(sysdate,'q'), -1)),'yyyy-mm-dd') from dual;
基于月的运算:
--得到月份 select to_char(sysdate,'month') from dual; --得到第几月 select to_char(sysdate,'mm') from dual; --该月第一天 select trunc(sysdate,'mm') from dual; --该月最后一天 select last_day(trunc(sysdate)) from dual; --当前月份的第几天 select to_char(sysdate,'dd') from dual;
基于周的运算:
--一周的第一天 select to_char(sysdate,'d') from dual; --得到星期几 select initcap(to_char(sysdate,'day')) from dual; --取当前时间是一年中的第几周(按实际日历的) select to_char(sysdate,'iw') from dual; ---取当前时间是一年中的第几周(从1.1开始算) select to_char(sysdate,'ww') from dual; --取当前时间是一个月中的第几周(从1日开始算) select to_char(sysdate,'w') from dual; --本周第一天(星期天算起) selecttrunc(sysdate,'d') from dual; --本周最后一天(星期天算起) select trunc(sysdate,'d') +6 from dual;
基于天的运算:
--获取前一天的开始时间和结束时间 select to_char(to_date(to_char(sysdate - 1,'yyyy-mm-dd'),'yyyy-mm-dd'), 'yyyy-mm-dd hh24:mi:ss') from dual; select to_char(to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd'), 'yyyy-mm-dd hh24:mi:ss') from dual;
综述:
举例就到此为止了,多数的运算已经罗列出来,如有其他需求,可以尝试以上的方法来引申。
欢迎大家一起学习交流!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

The function in Oracle to calculate the number of days between two dates is DATEDIFF(). The specific usage is as follows: Specify the time interval unit: interval (such as day, month, year) Specify two date values: date1 and date2DATEDIFF(interval, date1, date2) Return the difference in days

The retention period of Oracle database logs depends on the log type and configuration, including: Redo logs: determined by the maximum size configured with the "LOG_ARCHIVE_DEST" parameter. Archived redo logs: Determined by the maximum size configured by the "DB_RECOVERY_FILE_DEST_SIZE" parameter. Online redo logs: not archived, lost when the database is restarted, and the retention period is consistent with the instance running time. Audit log: Configured by the "AUDIT_TRAIL" parameter, retained for 30 days by default.

The Oracle database startup sequence is: 1. Check the preconditions; 2. Start the listener; 3. Start the database instance; 4. Wait for the database to open; 5. Connect to the database; 6. Verify the database status; 7. Enable the service (if necessary ); 8. Test the connection.

The INTERVAL data type in Oracle is used to represent time intervals. The syntax is INTERVAL <precision> <unit>. You can use addition, subtraction, multiplication and division operations to operate INTERVAL, which is suitable for scenarios such as storing time data and calculating date differences.

In Oracle, you can use the nested INSTR function to determine whether a string contains two substrings at the same time: when INSTR(string1, string2a) is greater than 0 and INSTR(string1, string2b) is greater than 0, it is included; otherwise, it is not included.

To find the number of occurrences of a character in Oracle, perform the following steps: Get the total length of a string; Get the length of the substring in which a character occurs; Count the number of occurrences of a character by subtracting the substring length from the total length.

Oracle database server hardware configuration requirements: Processor: multi-core, with a main frequency of at least 2.5 GHz. For large databases, 32 cores or more are recommended. Memory: At least 8GB for small databases, 16-64GB for medium sizes, up to 512GB or more for large databases or heavy workloads. Storage: SSD or NVMe disks, RAID arrays for redundancy and performance. Network: High-speed network (10GbE or higher), dedicated network card, low-latency network. Others: Stable power supply, redundant components, compatible operating system and software, heat dissipation and cooling system.

The amount of memory required by Oracle depends on database size, activity level, and required performance level: for storing data buffers, index buffers, executing SQL statements, and managing the data dictionary cache. The exact amount is affected by database size, activity level, and required performance level. Best practices include setting the appropriate SGA size, sizing SGA components, using AMM, and monitoring memory usage.
