【问题标题】:How to create a table with a row for each day of a given year?如何为给定年份的每一天创建一个包含一行的表格?
【发布时间】:2011-06-08 17:42:24
【问题描述】:

我需要开发一个日历,告诉你某一天是 A、B、C 还是 D 类型。所以基本上,用户请求某一天的信息,网站会告诉他们那一天是否属于 A 类型、B、C 或 D。所以我将创建一个 PHP 函数来检查数据库中的给定日期,并返回其类型。

是否可以(如果可以,这是一个好习惯)以编程方式为一年中的每一天创建一个包含一行的 mysql 表,并使用 DATE 类型来标识每一天?我怎样才能做到这一点?

编辑:最后,我使用了@nic 的想法,但我用 PHP 对其进行了编码,并用它创建了一个可重用的函数。该函数需要一个字符串参数,其中包含 YYYY 格式的年份,并创建一个表格,其中包含包含 DATE 字段的一年中的每一天的一行,以及用于日、月、年和工作日的几个文本字段。

你可以找到它here

【问题讨论】:

  • 谢谢@nos,这很有用!
  • 确定日期类型的过程是可以通过算法表达的,还是只是人类定义的映射?同一天,即 6 月 4 日,无论年份是否相同?闰年 2 月 28 日之后的日子会怎样?如果它是人为定义的非算法映射,那么表格是正确的解决方案。如果可以计算日期类型,则不应存储表格。
  • @Jim,它是由后端人定义的映射,所以按照你的逻辑,一张表应该没问题...

标签: php mysql database


【解决方案1】:

我会说是的,这是一个很好的做法。您的数据库中也可以有一个数字表。在某些情况下它可以派上用场。

查看 Ronnis 的回答,了解如何创建 Calendar 表,就像您想要的那样。我所说的数字表,就是他创建的numbers 表。

您可以将日期存储很多年,比如一百年。这意味着一个表只有大约 36500 行。

【讨论】:

  • 数字表是什么意思? (对不起,如果这是一个愚蠢的问题)
【解决方案2】:

最后,我使用了@nic 的想法,但我用 PHP 编写了代码,并用它创建了一个可重用的函数。该函数需要一个字符串参数,其中包含 YYYY 格式的年份,并创建一个表,其中包含包含 DATE 字段的一年中的每一天的一行,以及用于日、月、年和工作日的多个字符串字段。

你可以找到它here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2023-04-01
    • 2017-12-04
    • 2010-09-24
    • 1970-01-01
    • 1970-01-01
    • 2020-08-13
    相关资源
    最近更新 更多