编写以下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.DAY
,M.MONTH
和M.YEAR
转换为日期字段。上述工作,但似乎比它需要的复杂得多。 (如果有一种ANSI SQL的方法,那就更好了。)
谢谢!
答案 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的算术解决方案一样好。