【问题标题】:How can I save only the day/month part of a date?如何仅保存日期的日/月部分?
【发布时间】:2014-10-05 04:41:39
【问题描述】:

我想将日期的月份和日期部分保存在数据库表中。无论实际年份如何,这都会得到修复,因此我也不需要保存年份。
我可以定义一个类型,如:char(5) 并将其保存为:01-01,但这不会“保护”免受垃圾字符串的影响。

有没有办法更好地定义它?例如。一个月和一天的枚举有意义吗? (尽管仍然可以定义像 02-30 这样的东西,这当然是没有意义的)

【问题讨论】:

  • 您可以使用两个字段而不是一个字段。您将对它们有更多的控制权
  • @JCalcines:但是什么类型?我会遇到同样的问题,但是在 2 个字段中(例如,如果我将它们定义为 char 或 int)
  • 您可以同时使用int。更容易检查月份是否在 1 到 12 之间以及日期是否在 1 到 31 之间。您也可以使用 EXTRACT(MONTH from '2014/08/12') 从日期中提取月份和日期
  • @JCalcines:但是仍然可以使用错误的值更新该列。您假设该表将仅通过例如更新一个用户界面
  • 好的,我开始明白你的意思了,但是 2 月 29 日会发生什么。这是对还是错?

标签: mysql database date types


【解决方案1】:
select to_char(to_date('2011-01-17', 'yyyy-mm-dd'),'dd-mm') from dual;

17-01

它是用 Oracle 编写的,您可以使用 Query for SQL 中的逻辑。

【讨论】:

  • 我的问题是关于存储值。而不是关于如何检索日期的月份部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 2014-08-25
  • 1970-01-01
  • 2014-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多