从多列变换为日期

时间:2010-05-04 23:25:01

标签: sql mysql string date

编写以下SQL的更好方法是什么:

str_to_date(
  concat(convert(D.DAY, CHAR(2)),
  '-',
  convert(M.MONTH, CHAR(2)),
  '-',
  convert(M.YEAR, CHAR(4))),
  '%e-%m-%Y' ) as AMOUNT_DATE

我想使用MySQL将列D.DAYM.MONTHM.YEAR转换为日期字段。上述工作,但似乎比它需要的复杂得多。 (如果有一种ANSI SQL的方法,那就更好了。)

谢谢!

2 个答案:

答案 0 :(得分:2)

怎么样?
DATE_ADD(
  DATE_ADD(
    MAKEDATE(M.YEAR,1),
    INTERVAL M.MONTH-1 MONTH
  ), 
  INTERVAL D.DAY-1 DAY
)

答案 1 :(得分:2)

您可以使用CONCAT_WS代替CONCAT进行一项小改进(“WS”代表“带分隔符” - 相当于join或{{1}在其他语言中)。 MySQL应该自动将参数转换为字符串,因此我认为implode函数是不必要的。

CONVERT

我猜这不会像Tomalak的算术解决方案一样好。