【问题标题】:Oracle SQL Time/date always a String?Oracle SQL 时间/日期总是一个字符串?
【发布时间】:2023-03-28 03:52:01
【问题描述】:

在我主要使用 Python 编写代码并使用分析工具时,我将以此作为序言; Alteryx、Tableau、Spotfire 和其他一些。

我的任务是对一些旧的 etl 进行现代化改造,并为报告例程提供了几份 2006 年创建的报告。需要更新、删除 Java 函数并推送到云端。 SQL 绝对是一个试验,任何认为用单个字母分配别名 everything 的人都应该被枪决。

除了投诉,我的实际问题是:::

每个“日期/时间”列都设置为一个字符串。他们每个人。然后,我被赋予修改/更新的每个 SQL 查询都使用 cast 转换为日期时间,然后通过 sysdate() -X 进行拉取 事实上,我接触到的几乎所有 Oracle DB 几乎所有的数据类型,比如 90%,都只是字符串。

我对 SQL 还很陌生,而且我承认已经习惯了。这是正常的吗?

【问题讨论】:

  • 这不正常。数据应存储为dates 或timestamps。
  • 听起来像是“重构”列表的另一个项目。不要习惯它,趁你还拥有新兵那种不厌其烦的乐观情绪时修复它!

标签: sql oracle11g


【解决方案1】:

这取决于。这不是我通常会在我工作的地方看到的东西。问题是,我不知道要求是什么。也许以这种方式设计数据模型是有原因的。您需要了解数据的使用方式。如果您将其中一个字符串更改为日期,它会破坏下游的内容吗?

【讨论】:

  • 我不同意。除非需要满足某些无法在 datetimestamp 中表示的特殊值(如 never),否则所描述的设计是没有根据的和糟糕的,并且可能是由不知道的人决定的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
相关资源
最近更新 更多