create or replace function datediff(type in varchar2, startTime in varchar2,endTime in varchar2,v in varchar2) return number as
v_result number;
sql_1 varchar2(200);
begin
dbms_output.put_line('1');
if(type = 'day') then
sql_1 := 'select '||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))) from dual';
dbms_output.put_line('1');
elsif(type = 'month') then
sql_1 := 'select '||v||'(months_between(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))) from dual' ;
dbms_output.put_line('1');
elsif(type = 'week') then
dbms_output.put_line('1');
sql_1 := 'select '||v||'(TO_NUMBER(to_date('''||startTime||''',''YYYY-MM-DD'') - to_date('''||endTime||''',''YYYY-MM-DD''))/7) from dual ';
end if;
dbms_output.put_line(sql_1);
EXECUTE IMMEDIATE sql_1 into v_result ;
return (v_result);
end;
--先执行以上函数,这样就在Oracle自己写了一个该函数;
使用时候可以这样:
select datediff('week','2012-09-01','2012-08-01','round') from dual ;
--说明'week'表示周,'month'表示月,'day'表示天
--中间传俩日期
--第四个参数:周或月四舍五入用‘round’ ,向上取整用‘ceil’ 向下取整用‘floor’
分享到:
相关推荐
在Oracle数据库系统中,...总之,虽然Oracle没有内置的`DATEDIFF`函数,但通过上述方法,我们可以轻松地计算两个日期之间的差异。这显示了Oracle数据库系统的灵活性和强大功能,使其能够适应各种不同的需求和工作场景。
在Oracle数据库中,并未直接提供`DATEDIFF`函数来计算两个日期之间的差异。这与SQL Server等其他数据库系统有所不同,在那些系统中,`DATEDIFF`是一个常用且非常实用的功能。然而,在Oracle中我们可以通过自定义函数...
2. **计算日期差**: Oracle 的 `MONTHS_BETWEEN` 函数计算两个日期之间的月份数,而 SQL Server 则使用 `DATEDIFF` 函数,例如 `DATEDIFF(month, '2004-09-01', '2004-09-18')` 计算日期间隔。 3. **获取当前日期和...
Oracle 和 SQL Server 都是广泛使用的数据库管理系统,它们在处理日期和时间数据时提供了丰富的内置函数。下面是对这两个系统中日期函数的详细比较: 1. **日期相加/减**: - Oracle 使用 `ADD_MONTHS(date, ...
此外,Oracle还有日期时间函数,如SYSDATE获取当前系统日期,TO_DATE将字符串转换为日期格式,以及DATEADD和DATEDIFF等用于日期运算的函数。转换函数如TO_CHAR和TO_NUMBER分别用于将日期或数值转换为字符串和将字符...
2. `DATEDIFF()`: 计算两个日期之间的差值,可按天、周、月等单位计算。 3. `CONVERT()`: 将日期时间值转换为字符串,或者将字符串转换为日期时间值,支持多种日期格式。 4. `GETDATE()`: 返回当前系统日期和时间。 ...
- `NEXT_DAY/N/A`: Oracle 的函数用于找到日期后的下一个指定天(如周日),SQL Server 没有直接等价函数。 - `TO_CHAR/DATENAME`: Oracle 将日期转换为字符串,SQL Server 使用 `DATENAME`。 - `TO_NUMBER (TO_...
- **日期间隔**: Oracle中使用`MONTHS_BETWEEN`函数计算两个日期之间的间隔,在SQL Server中使用`DATEDIFF`函数。 - **当前日期时间**: Oracle中的`SYSDATE`函数与SQL Server中的`GETDATE()`函数相对应。 - **月份...
要找出两个日期之间的天数,可以使用`DATEDIFF(day, date1, date2)`,但在Oracle中,可以使用`NUMTODSINTERVAL(date2-date1, 'DAY')`。 9. **日期比较**: 可以使用`, `>=`, `, `>`, `=`, `!=`等比较运算符对日期...
SYBASE iq中提供了多种日期函数,例如:Getdate()、Datename()、Datepart()、Datediff()和Dateadd()等 11. ISNULL 函数 SYBASE iq中可以使用ISNULL函数来代替查询栏或合计中的空值,例如:Select avg(isnull(total...
- 两个数据库都有`DATEADD()`和`DATEDIFF()`函数,但参数和用法略有不同。 3. **数学函数** - 两个系统都提供了基本的数学函数如`ABS()`, `SQRT()`, `PI()`等。 - SQL Server的`RAND()`生成随机数,Oracle对应...
- SQL Server的`DATEADD()`和`DATEDIFF()`在Oracle中分别对应`ADD_MONTHS()`、`NUMTODSINTERVAL()`或`DATEDIFF()`(但Oracle的DATEDIFF不直接返回整数,而是相差的时间间隔)。 3. **数学和数值函数**: - 两系统...
- SQL Server 中,`GETDATE` 获取当前日期和时间,`DATEADD` 和 `DATEDIFF` 分别用于添加或减去日期部分,Oracle 对应的分别是 `SYSDATE`、`ADD_MONTHS` 和 `NUMTOYMINTERVAL` 或 `NUMTODSINTERVAL`。 - 在提取...
- 对于日期操作,SQL Server有`DATEADD()`和`DATEDIFF()`, Oracle则使用`ADD_MONTHS()`, `EXTRACT()`, 和 `NEXT_DAY()`等函数。 4. **转换函数**: - `CAST()`和`CONVERT()`在SQL Server中用于类型转换,Oracle...
在数据库管理领域,SQL Server和Oracle都是广泛应用的关系型数据库系统,它们都提供了丰富的函数来处理数据。本篇文章将深入探讨SQL Server与Oracle中常用函数的对比,帮助读者更好地理解和运用这两种数据库。 一、...
- **DATEADD**、**DATEDIFF**、**GETDATE**、**LAST_DAY**、**NEXT_DAY**、**DATENAME**、**DATEPART**、**CONVERT**:这些函数用于处理日期时间数据,在SQL Server中更为丰富。 #### 转换函数 - **TO_CHAR**、**TO...
- Oracle 使用日期列加减法或者MONTHS_BETWEEN函数计算两个日期之间的差异,SQL Server使用DATEDIFF函数实现相同功能。 - **SYSDATE/GETDATE()** - Oracle 使用SYSDATE函数获取当前系统日期和时间,SQL Server...
### Oracle与SQL Server函数对照详解 #### 一、概述 本文档旨在对比并解析Oracle数据库与Microsoft SQL Server数据库中常用函数的区别与等效性。两者虽然都是关系型数据库管理系统(RDBMS)的重要组成部分,但在...