首页 > 其他分享 >关于日期的处理经验FAQ

关于日期的处理经验FAQ

时间:2024-11-25 11:56:51浏览次数:10  
标签:经验 name column FAQ 日期 date table SELECT

一、说明

在日常的数据加工、搬迁等操作过程中,账期字段是一个无法避免的字段,在灵镜报表平台中需要使用账期字段(必须是 date 类型)来进行报表的筛选年、月、日,但是在梧桐数据库中,date 的数据格式为 YYYY-MM-DD HH24:MI:SS 类型,固涉及到一些相应的转换。

二、部分使用经验

Q1:在不同数据库中,日期的输出(梧桐数据库、mysq、oracle)。

1.获取当前日期和时间

  • 梧桐数据库:

    SELECT CURRENT_DATE; -- 当前日期
    SELECT CURRENT_TIMESTAMP; -- 当前日期和时间
    
  • MySQL:

    SELECT CURDATE(); -- 当前日期
    SELECT NOW();     -- 当前日期和时间
    
  • Oracle:

    SELECT SYSDATE FROM DUAL; -- 当前日期和时间
    

2.日期比较

  • 梧桐数据库:

    SELECT * FROM table_name WHERE date_column >= '2024-08-21';
    
  • MySQL:

    SELECT * FROM table_name WHERE date_column >= '2024-08-21';
    
  • Oracle:

    SELECT * FROM table_name WHERE date_column >= TO_DATE('2024-08-21', 'YYYY-MM-DD');
    

3.日期加减

  • 梧桐数据库:

    SELECT date_column + INTERVAL '1 day' FROM table_name;
    
  • MySQL:

    SELECT DATE_ADD(date_column, INTERVAL 1 DAY);
    
  • Oracle:

    sql
    SELECT date_column + 1 FROM table_name; -- 加一天
    

4.提取日期部分

  • 梧桐数据库:

    SELECT EXTRACT(YEAR FROM date_column), EXTRACT(MONTH FROM date_column), EXTRACT(DAY FROM date_column) FROM table_name;
    
  • MySQL:

    SELECT YEAR(date_column), MONTH(date_column), DAY(date_column) FROM table_name;
    
  • Oracle:

    SELECT EXTRACT(YEAR FROM date_column), EXTRACT(MONTH FROM date_column), EXTRACT(DAY FROM date_column) FROM table_name;
    

5.日期格式转换

  • 梧桐数据库:

    SELECT TO_CHAR(date_column, 'YYYY-MM-DD HH24:MI:SS') FROM table_name;
    
  • MySQL:

    SELECT DATE_FORMAT(date_column, '%Y-%m-%d %H:%i:%s') FROM table_name;
    
  • Oracle:

    SELECT TO_CHAR(date_column, 'YYYY-MM-DD HH24:MI:SS') FROM table_name;
    

6.计算两个日期之间的差异

  • 梧桐数据库:

    SELECT end_date_column - start_date_column FROM table_name;
    
  • MySQL:

    SELECT DATEDIFF(end_date_column, start_date_column) FROM table_name;
    
  • Oracle:

    SELECT (end_date_column - start_date_column) FROM table_name;
    

7.截取日期到指定的精度

  • 梧桐数据库:

    SELECT date_trunc('hour', date_column) FROM table_name; -- 截取到小时
    
  • MySQL:

    -- 不直接支持截取到小时或分钟,可以使用DATE_FORMAT
    SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00');
    
  • Oracle:

    SELECT TRUNC(date_column, 'HH24') FROM table_name; -- 截取到小时
    

Q2:数据账期在梧桐数据库中的截取

select * from y_t_m where to_char(stat_month, 'YYYYMM')='202407'

通常情况下习惯使用 YYYYMM 格式作为月账期,在梧桐数据库下进行账期比较时,使用该查询语句会将 date 类型 stat_month 字段的日期格式化为 YYYYMM 的字符串格式,然后与字符串'202407'进行比较。

Q3:在梧桐数据库中,获取日期的年、月、日等。

SELECT EXTRACT(YEAR FROM date_column), EXTRACT(MONTH FROM date_column), EXTRACT(DAY FROM date_column) FROM table_name;

梧桐数据库提供了多种日期函数,如AGE(), EXTRACT(), DATE_TRUNC()等。

注解:

AGE() 函数

AGE() 函数用于计算两个日期之间的差异,或者计算从指定日期到当前日期的差异。如果你只提供一个日期参数,AGE() 会计算从那个日期到当前日期的年龄。结果以“年 月 天”的格式返回。例如,计算一个出生于2000年1月1日的人在当前日期的年龄:

SELECT AGE(timestamp '2000-01-01');

这将返回类似 "21 years 4 mons 12 days" 的结果,表示从2000年1月1日到当前日期的年龄 。

DATE_TRUNC() 函数

DATE_TRUNC() 函数用于将时间戳或间隔值截断到指定的精度级别。例如,如果你想截断一个时间戳到小时级别,可以使用以下 SQL 语句:

SELECT DATE_TRUNC('hour', TIMESTAMP '2017-03-17 02:09:30');

这将返回时间戳,精确到小时 "2017-03-17 02:00:00" 。

这些函数在处理日期和时间数据时非常有用,可以帮助你进行日期计算、数据提取和格式化等操作。

标签:经验,name,column,FAQ,日期,date,table,SELECT
From: https://www.cnblogs.com/chenxiaota/p/18567269

相关文章

  • 【FAQ】Harmo【FAQ】HarmonyOS SDK 闭源开放能力 — 公共模块
    1.问题描述:文档哪里能找到所有的权限查看该权限是用户级的还是系统级的。解决方案:您好,可以看一下下方链接是否可以解决问题:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/permissions-for-all-V5https://developer.huawei.com/consumer/cn/doc/harmonyo......
  • 蓝桥杯c++算法学习【5】之枚举与模拟(卡片、回文日期、赢球票、既约分数:::非常典型的比刷
     别忘了请点个赞+收藏+关注支持一下博主喵!!!! ! ! !!!关注博主,更多蓝桥杯nice题目静待更新:)枚举与模拟一、卡片:【问题描述】        小蓝有很多数字卡片,每张卡片上都是一个数字(0到9)。         小蓝准备用这些卡片来拼一些数,他想从1开始拼出正整数......
  • 第十四章 JDK 8新的日期和时间 API
    目录一、旧版日期时间API存在的问题二、新日期时间API介绍三、JDK8的日期和时间类四、JDK8的时间格式化与解析五、JDK8的Instant类六、JDK8的计算日期时间差类七、JDK8的时间校正器八、JDK8设置日期时间的时区一、旧版日期时间API存在的问题1.设计......
  • AI绘画经验技巧干货,Stable Diffusion提示词Prompt的通用写法
    在使用StableDiffusionwebUI创作的时候,提示词Prompt并不是越多越好,也不可以随意堆积,可以按照下面的这个通用公式来写提示词描述,AI模型读取Promot是有先后顺序的,会按从前向后顺序解读。前缀+主体+场景+后缀更多stablediffusion模型插件以及安装包可以扫......
  • MMORPG技能管线设计经验总结
    导语:表现丰富、机制多变的技能作为MMORPG游戏战斗体验的核心组成部分,是吸引玩家的一大亮点,本文总结了在MMORPG技能系统设计上的一些经验,供大家参考。 1、设计思路 早期的MMORPG手游中,技能的表现相对简单,因此技能流程被分为几个固定的阶段(如准备阶段、攻击阶段、受击阶段),可......
  • 深入浅出:SpringBoot启动流程源码分析(持续更新中......)最新日期:2024年10月29日
    Hello,大家好,我是此林。今天来深入底层讲一讲SpringBoot是如何启动的,也就是我们单击运行SpringBoot启动类,它底层发生了什么?SpringBoot启动类很简单,只有一行代码。我们点进run()方法。我们发现,它底层其实进行了两步操作。第一步是new出一个SpringApplication对象,第二个是......
  • SQL实战训练之,力扣:1709. 访问日期之间最大的空档期
    目录        一、力扣原题链接        二、题目描述        三、建表语句        四、题目分析                五、SQL解答        六、最终答案        七、验证        八、知识点一、......
  • FineReport使用日期参数,计算指定日期的不同天数差
    一、计算每个客户在订购时间过去的不同时间范围内的货品价值和总运货费在帆软报表(FineReport)中,你可以使用时间参数来参与表格计算。时间参数可以用于过滤数据、计算日期差、分组汇总等。以下是如何在帆软报表中设置和使用时间参数的步骤,并将其应用于表格计算。步骤1:创......
  • 后端程序员必备:15个MySQL表设计的经验准则
    15个MySQL表设计的经验准则在数据库设计中,MySQL表的设计至关重要。一个良好的表设计可以提高数据库的性能、可维护性和数据的准确性。以下是15个MySQL表设计的经验准则,希望能为你的数据库设计提供有益的指导。一、通用字段的设置在设计表时,尽量包含以下几个通用......
  • MySQL 【日期】函数大全(六)
    目录1、TIME_FORMAT() 按照指定的格式格式化时间。2、TIME_TO_SEC() 将指定的时间值转为秒数。3、TIMEDIFF() 返回两个时间之间的差值。4、TIMESTAMP() 累加所有参数并将结果作为日期时间值返回。5、TIMESTAMPADD() 将指定的时间间隔加到一个日期时间值上并返回结果......