【问题标题】:How to convert a year to date in mysql?如何在mysql中将年份转换为日期?
【发布时间】:2015-08-28 12:09:14
【问题描述】:

我在年份数据类型字段中有一个包含年份数据的表,现在我想插入带有日期数据的新数据,并且我想将年份从旧数据转换为日期,默认月份和日期为 1.1.YearFromOldData。 我正在寻找类似函数 STR_TO_DATE 但对于数据类型 year NOT VARCHAR NOT VARCHAR 的东西,我找不到它。我该怎么做?

我想这样做

SELECT YEAR_TO_DATE(myYearField, '%1/%1/%Y') 来自我的表

【问题讨论】:

  • 请编辑您的问题并提供示例数据和所需结果。
  • 现在@GordonLinoff 更清楚了吗?

标签: mysql


【解决方案1】:

假设您有一个名为 year_dtvarchar 字段包含旧年份,请使用以下查询获取具有默认日期和月份的日期

SELECT DATE(CONCAT(table.year_dt, '-01-01')) as 'date' FROM table

这将以默认格式返回日期,即YYYY-MM-DD

【讨论】:

  • 对不起,我的措辞不清楚,年份存储在数据类型 year 中。你的方法仍然适用于这些信息吗?
  • 是的,如果它也是 year 字段,它应该可以工作,你应该尝试一下
【解决方案2】:

如果你想要一年的第一天,我认为最简单的方法是makedate()

select makedate(year, 1)

【讨论】:

    【解决方案3】:

    您可以使用时间戳来插入数据库

    timestamp = (year - 1970) / 31557600
    

    【讨论】:

      【解决方案4】:

      STR_TO_DATE() 正是您所需要的。如果您有四位数的年份、字符串、整数或YEAR 列,请尝试此操作。它适用于所有人。

      select str_to_date(CONCAT(year_column,'-01-01'), '%Y-%m-%d')
      

      如果你有两位数的年份,试试这个(小写 %y)

      select str_to_date(CONCAT(year_column,'-01-01'), '%y-%m-%d')
      

      这很酷,因为您可以进行各种日期运算:例如

      select str_to_date(CONCAT(year_column,'-01-01'), '%Y-%m-%d')
             + INTERVAL 1 QUARTER
             - INTERVAL 1 DAY
      

      将为您提供一年中第一季度的最后一天。

      【讨论】:

      • 对不起,我的措辞不清楚,年份存储在数据类型 year 中。你的方法仍然适用于这些信息吗?
      • 是的。请看我的编辑。如果你还没有找到sqlfiddle.com,你应该去看看。
      猜你喜欢
      • 2018-12-06
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-10
      • 2020-06-04
      相关资源
      最近更新 更多