【问题标题】:Mysql converting double or int into a date or monthMysql 将 double 或 int 转换为日期或月份
【发布时间】:2018-05-03 04:58:01
【问题描述】:

这可能是重新发布,但我找不到任何可以回答我的问题的内容。我有一张表,其中天数列为双精度值,如 435.6 或 5.2,我需要将其转换为一个月。我试过了:

SELECT day FROM table WHERE DATE_ADD('2014-01-01', INTERVAL 31 DAY);

但该查询只是吐出相同的内容。请提供任何帮助。

【问题讨论】:

  • 应该应用435.6 天的参考日期或开始日期是什么?您能向我们展示示例输入和输出数据吗?
  • 例如:我想使用开始日期 2014-01-01。因此,拥有双精度值 32.5 的“day”应转换为 2014-02-02,或者当 day 为 0.0 时,应转换为 2014-01-01。

标签: mysql date type-conversion double


【解决方案1】:

编辑版本: 假设您的表名为 t 并且您的小数列名为 d

select date_format(date_add('2014-01-01', interval d day),"%m") from t;

这应该添加您的纪元日期 ('2014-01-01') 并将结果格式化为数字 (00-12),在将 d 天添加到纪元之后。对于以单词表示的月份(1 月至 12 月),请使用 "%M"here's documentation for DATE_FORMAT.

here is a fiddle of the above code working for sample values

【讨论】:

  • 在 '), "%m")' 处出现语法错误编辑:是的,日表包含一堆小数,我需要将其转换为月份。
  • 该错误是因为date_add 的语法是date_add(**your_date**, **some_amount** **magnitude**),并且使用day 作为列和幅度导致我迷失了方向。我已经编辑了我提出的答案。
  • 这是我尝试使用的示例运行,SELECT day FROM tables WHERE DATE_FORMAT(DATE_ADD(CURDATE(), INTERVAL 30 DAYS), "%m");我在意外令牌 `(' 附近遇到错误
  • 好的......如果您尝试我提供的答案,您实际上会得到什么,如果这不能回答您的问题,为什么不/它返回什么错误?更改 WHERE 子句不会重新格式化输出。
  • 它有效,但结果一无所获。刚才说空集 0.00 秒。编辑:当我尝试使用小写 %m 时,它只会为我打印出 1000 行,但它们仍保留为小数。
猜你喜欢
  • 2015-07-04
  • 1970-01-01
  • 2013-12-15
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-31
相关资源
最近更新 更多