三列合并为一个日期

时间:2016-03-01 13:12:01

标签: mysql sql

我有一个包含10多列的数据库。其中三列代表日,月和年。我现在需要一个日期作为一个数据类型。

我已经尝试过在互联网上解释的一些不同的解决方案,但是他们并没有为mysql工作。我无法找到我犯的错误。

SELECT *,
CAST(
  CAST(CREATE_YEAR AS VARCHAR(4)) +
  RIGHT('0' + CAST(CREATE_MONTH AS VARCHAR(2)), 2) +
  RIGHT('0' + CAST(CREATE_DAY AS VARCHAR(2)), 2) 
AS DATETIME)
from incident_view

三列的名称是:CREATE_DAY,CREATE_MONTH和CREATE_YEAR。

示例我希望它如何运作:列DAY的数字为27,月份为数字5,年份为2015.我希望显示如下:27.5.2015。

SELECT *,
STR_TO_DATE( 
     CONCAT( CREATE_DAY, '/', CREATE_MONTH, '/', CREATE_YEAR ),
     '%d/%m/%Y' 
   ) as rcvd_date
FROM incident_view
where CUSTOMER_COMPANY_NAME = "Company" AND (create_month = MONTH(NOW() - INTERVAL 1 MONTH) AND (create_year = YEAR(NOW() - INTERVAL 1 MONTH)))

这个sql让我在我的数据库中有一个名为rcvd_data的逻辑列。但它显示了我每天 - 每年 - 每小时 - 分钟 - 秒,但我只需要一天一个月和一年。

数据字段示例:01/02/2016 00:00:00

我将不胜感激任何帮助。 谢谢。

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以使用:

select str_to_date(concat_ws('-', CREATE_YEAR, CREATE_MONTH, CREATE_DAY),
                   '%Y-%m-%d'
                  ) as CreateDate