梧桐数据库-关于梧桐数据库日期的处理经验分享

一、说明

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

二、部分使用经验

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

1.获取当前日期和时间

- **梧桐数据库**:

  ```sql

  SELECT CURRENT_DATE; -- 当前日期

  SELECT CURRENT_TIMESTAMP; -- 当前日期和时间

  ```

- **MySQL**:

  ```sql

  SELECT CURDATE(); -- 当前日期

  SELECT NOW();    -- 当前日期和时间

  ```

- **Oracle**:

  ```sql

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

  ```

2.日期比较

- **梧桐数据库**:

  ```sql

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

  ```

- **MySQL**:

  ```sql

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

  ```

- **Oracle**:

  ```sql

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

  ```

3.日期加减

- **梧桐数据库**:

  ```sql

  SELECT date_column + INTERVAL '1 day' FROM table_name;

  ```

- **MySQL**:

  ```sql

  SELECT DATE_ADD(date_column, INTERVAL 1 DAY);

  ```

- **Oracle**:

  ```sql

  sql

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

  ```

 4.提取日期部分

- **梧桐数据库**:

  ```sql

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

  ```

- **MySQL**:

  ```sql

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

  ```

- **Oracle**:

  ```sql

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

  ```

 5.日期格式转换

- **梧桐数据库**:

  ```sql

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

  ```

- **MySQL**:

  ```sql

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

  ```

- **Oracle**:

  ```sql

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

  ```

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

- **梧桐数据库**:

  ```sql

  SELECT end_date_column - start_date_column FROM table_name;

  ```

- **MySQL**:

  ```sql

  SELECT DATEDIFF(end_date_column, start_date_column) FROM table_name;

  ```

- **Oracle**:

  ```sql

  SELECT (end_date_column - start_date_column) FROM table_name;

  ```

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

- **梧桐数据库**:

  ```sql

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

  ```

- **MySQL**:

  ```sql

  -- 不直接支持截取到小时或分钟,可以使用DATE_FORMAT

  SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:00:00');

  ```

- **Oracle**:

  ```sql

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

  ```

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

```sql

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

```

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

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

```sql

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日的人在当前日期的年龄:

```sql

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

```

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

 DATE_TRUNC() 函数

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

```sql

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

```

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容