【问题标题】:Is it safe to store dates as a string in mysql?在mysql中将日期存储为字符串是否安全?
【发布时间】:2020-10-18 12:54:54
【问题描述】:

我必须允许我的用户在他们之前的更新延迟 24 小时后进行更新,所以因为这种情况下的日期操作将在后端进行,但在 Web 服务器中,我可以将 Javascript 日期存储为数据库中的一个字符串,当我必须计算两个日期之间的差异时,我可以从数据库中查询 lastUpdateDate 并将其解析为 JS 日期对象,这样做安全吗?

【问题讨论】:

  • 你的问题很模糊。您可以将所有内容存储为字符串,如果操作正确,它就可以工作。但是您应该尽可能使用数据库中的不同数据类型。
  • 小心一点是安全的
  • 这可能与存储100'one hundred' 一样安全(或不安全)。
  • 我想知道这样做是否有任何漏洞,现在我知道没有,谢谢!

标签: mysql sql node.js string date


【解决方案1】:

是的,除非您的日期字符串是唯一的。您可以为其指定 UNIQUE 子句。但是没有理由这样做,因为 MySql 提供了 5 种内置的日期/时间数据类型(DATE、DATETIME、TIMESTAMP、TIME、YEAR(M))。不过,如果您将日期保存为字符串,则以后在以正确格式提取日期时可能会遇到问题。

【讨论】:

    【解决方案2】:

    将日期作为字符串存储在 mysql 中是否安全?

    只要您用来表示日期的格式是明确的(即每个值都映射到一个唯一的日期),它就是安全

    但是不使用正确的数据类型来存储值总是低效。迟早,您将需要在数据库中进行一些日期计算(排序、过滤、添加......):将日期存储为字符串会使此类操作变得更加复杂(开销取决于您选择的格式),而且效率要低得多(您通常需要将所有字符串转换为日期才能对它们进行操作)。

    另一方面,从一开始就使用正确的数据类型不会使前端的事情变得更复杂——尤其是在 MySQL 中。您只需在将字符串传递到数据库之前正确格式化字符串 ('YYYY-MM-DD HH:MI:SS'),MySQL 就会很乐意将它们视为日期。

    【讨论】:

    • 在这种特殊情况下,我必须仅将日期用于我在问题中解释的目的(至少我认为是这样),无论如何我一定会使用你所说的,我会尝试处理日期时要更加小心。
    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 2019-01-11
    • 2013-07-28
    • 1970-01-01
    • 2012-03-27
    • 2011-06-05
    • 2019-08-15
    • 1970-01-01
    相关资源
    最近更新 更多