我的一天总结_2023.1.3

2023.1.3

今天具体做的事

  1. 今天早上是7.40多起床的,吃完饭后差不多8点
  2. 上午先花了一会时间将Flume大概的用法学习了一下
  3. 然后开始学习了Kafka,学习了一会,然后睡了一会
  4. 中午吃饭完之后又学习了Kafka到2点多
  5. 下午2点多到晚上7点多一直在忙着搬家帮着搬东西
  6. 7.30学习了一会Kafka到8.30吧太困了直接睡觉了,想着可以睡到明天早上然后早点起来学习,谁知道我10.30就醒了,醒的时候我一会到早上了,一看表才10.30。目前是没有睡意了
  7. 花了一点时间做了几道动态规划的力扣
  8. emm…
  9. 接下来打算继续去学习Kafka,这两天准备把采集项目弄完

对自己今天的评价

emm…感觉今天一天学习的时间好少啊!

时间都用在搬家上面了,心里有点空虚…不充实…

对明天的自己想说

希望明天的自己可以 争分夺秒的去学习!

想一句鸡汤奶一下自己

现在好好奋斗,以后有你享福的。

<think> 我们被要求介绍fnd_date.canonical_to_date函数,根据提供的引用信息,我们可以总结如下: 1. 功能:该函数用于将字符型日期(字符串)转换为日期型(Oracle DATE类型)。这在处理日期数据时非常有用,特别是当日期以字符串形式存储或传递时。 2. 用法:在SQL语句或PL/SQL代码中调用,传入一个符合特定格式的日期字符串。 3. 注意事项: - 根据引用[2],如果转换失败,该方法会抛出标准异常(例如由于字符串格式不正确),但不提示消息。这与APP_DATE.CANONICAL_TO_DATE不同,后者会显示消息并抛出form_trigger_failure。 4. 示例:引用[3]提供了几个使用该函数的SQL语句示例。例如: ```sql SELECT fnd_date.canonical_to_date(TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1),&#39;yyyy-MM-dd&#39;)) FROM MTL_MATERIAL_TRANSACTIONS MMT ``` 这里,首先通过内部函数计算出上个月最后一天的日期,然后将其格式化为&#39;yyyy-MM-dd&#39;的字符串,再通过fnd_date.canonical_to_date转换为日期类型。 5. 包信息:引用[4]指出FND_DATE包位于数据库中,可以从SQL语句或其他数据库包中调用。并且提到,许多例程在APP_DATE和FND_DATE包中都有。 因此,我们可以这样介绍: --- ### `fnd_date.canonical_to_date` 函数 `fnd_date.canonical_to_date` 是 Oracle E-Business Suite (EBS) 中提供的一个函数,属于 `FND_DATE` 包。它的主要作用是将字符串(字符型日期)转换为 Oracle 的 `DATE` 类型。 #### 函数签名 ```sql FUNCTION canonical_to_date (p_date_string IN VARCHAR2) RETURN DATE; ``` #### 参数 - `p_date_string`: 输入的日期字符串。该字符串应该符合特定的日期格式要求(通常为 `YYYY/MM/DD HH24:MI:SS` 或 `YYYY-MM-DD HH24:MI:SS` 等,但具体取决于EBS环境的设置)。 #### 返回值 - 返回一个 `DATE` 类型的值。 #### 使用场景 在 Oracle EBS 开发中,经常需要处理日期数据。当日期数据以字符串形式传递(例如从表单输入或接口文件读取)时,需要将其转换为日期类型以便进行日期运算或存储到数据库的日期字段中。此时,可以使用 `fnd_date.canonical_to_date` 函数。 #### 示例 1. **在SQL查询中使用**: ```sql SELECT fnd_date.canonical_to_date(&#39;2023/10/15 14:30:00&#39;) FROM dual; ``` 这将把字符串 `&#39;2023/10/15 14:30:00&#39;` 转换为对应的日期值。 2. **在PL/SQL块中使用**: ```sql DECLARE v_date DATE; BEGIN v_date := fnd_date.canonical_to_date(&#39;2023-10-15 14:30:00&#39;); -- 然后可以使用v_date进行其他操作 END; ``` 3. **在WHERE子句中使用**(如引用[3]所示): ```sql SELECT nvl(SUM(MMT.PRIMARY_QUANTITY),0) FROM MTL_MATERIAL_TRANSACTIONS MMT WHERE MMT.LAST_UPDATE_DATE BETWEEN fnd_date.canonical_to_date(TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1),&#39;yyyy-MM-dd&#39;)) AND SYSDATE; ``` 此查询统计上个月最后一天到当前日期的物料事务处理数量。其中,上个月最后一天被转换为字符串(格式为&#39;yyyy-MM-dd&#39;),然后通过`fnd_date.canonical_to_date`转换回日期类型,用于比较。 #### 注意事项 - 如果传入的字符串格式不正确或无法解析为日期,函数将抛出异常(如 `ORA-01861: literal does not match format string`)。因此,在调用前应确保字符串格式正确。 - 与 `APP_DATE` 包中的同名函数相比,`FND_DATE.canonical_to_date` 在转换失败时不会显示自定义消息,而是直接抛出异常(引用[2])。因此,在编写代码时,建议进行异常处理。 #### 相关函数 - 还有一个反向函数 `fnd_date.date_to_canonical`,用于将日期类型转换为字符串。 - `APP_DATE` 包中也有类似的函数,但行为略有不同(尤其是在错误处理方面)。 --- §§相关问题§§ 1. `fnd_date.canonical_to_date` 与 `to_date` 函数有什么区别? 2. 如何确保传入 `fnd_date.canonical_to_date` 的字符串格式正确? 3. 在 Oracle EBS 中,除了 `fnd_date.canonical_to_date`,还有哪些常用的日期处理函数? 4. 如何处理 `fnd_date.canonical_to_date` 转换失败的情况? </think> ### `fnd_date.canonical_to_date` 函数详解 `fnd_date.canonical_to_date` 是 Oracle E-Business Suite (EBS) 中的标准日期转换函数,属于 `FND_DATE` 包。以下是核心功能和用法说明: #### 1. **核心功能** - **类型转换**:将 **字符型日期**(字符串格式)转换为 **Oracle DATE 类型** 示例:`&#39;2023-10-15&#39;` → `DATE &#39;2023-10-15&#39;` - **格式兼容**:自动处理符合 `YYYY-MM-DD` 或 `YYYY/MM/DD` 等标准格式的字符串(如 `&#39;2023/10/15&#39;`) - **异常处理**:转换失败时抛出标准异常(不显示提示消息)[^2] #### 2. **典型使用场景** ```sql -- 在SQL查询中直接使用 SELECT fnd_date.canonical_to_date(&#39;2023-10-01&#39;) FROM dual; -- 在WHERE条件中过滤日期范围 SELECT * FROM mtl_material_transactions WHERE last_update_date BETWEEN fnd_date.canonical_to_date(&#39;2023-09-01&#39;) AND fnd_date.canonical_to_date(&#39;2023-09-30&#39;); -- [^3] -- 在PL/SQL中赋值日期变量 DECLARE v_start_date DATE; BEGIN v_start_date := fnd_date.canonical_to_date(p_start_date); -- p_start_date为字符串 END; ``` #### 3. **与 `app_date.canonical_to_date` 的区别** | 特性 | `fnd_date.canonical_to_date` | `app_date.canonical_to_date` | |---------------------------|-----------------------------|------------------------------| | **错误处理** | 抛出标准异常(无消息)[^2] | 显示消息并触发 `form_trigger_failure` [^2] | | **适用场景** | 数据库层/SQL语句 | 表单(Form)开发层 | | **包位置** | 数据库内置包[^4] | 应用层包 | #### 4. **关键注意事项** - **格式要求**:输入字符串必须为标准日期格式(如 `YYYY-MM-DD`),否则抛出 `ORA-01861` 异常 - **空值处理**:输入 `NULL` 时返回 `NULL` - **性能建议**:避免在百万级数据量的 `WHERE` 子句中直接调用,可先转换到变量 #### 5. **反向转换函数** 如需将日期转回字符串,使用配套函数: `fnd_date.date_to_canonical(date_value)` → 返回 `YYYY/MM/DD HH24:MI:SS` 格式字符串 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C_x_330

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值