其中STR_TO_DATE和SUBSTRING

时间:2018-11-18 04:34:40

标签: mysql

嗨,我想从一个字符串中组合3个子字符串(年,月和日),并将整个串联作为日期格式,但是我不知道自己在做什么错。字符串的所有字符均为数字(11)。

SELECT str_to_date('SELECT CONCAT(substring(String,1,2),
                                  substring(String,3,2),
                                  substring(String,5,2)) 
                    FROM table', '%y %m %d');

2 个答案:

答案 0 :(得分:1)

我们可以通过一个子字符串调用来做到这一点:

SELECT
    STR_TO_DATE(LEFT(String, 6), '%y%m%d')
FROM yourTable;

注意:您应该避免将日期信息存储为纯文本。我通常的建议是将STR_TO_DATE返回的数据保留在单独的列中,然后删除文本日期列。

答案 1 :(得分:0)

假设String是表中的列名。您无需在SELECT .. FROM table函数中指定Concat()。您可以直接在函数内部使用列值。您的方法在语法上也是错误的。 FROM table应该在SELECT ..子句之后。

现在,在指定的日期格式'%y %m %d'中, y mm dd 之间存在空格。因此,在连接期间您要么需要在中间使用空格:

SELECT str_to_date(CONCAT(substring(String,1,2), ' ',
                          substring(String,3,2), ' ',
                          substring(String,5,2)
                         )
                   , '%y %m %d')
FROM table

或者,您可以摆脱指定格式的空格。

SELECT str_to_date(CONCAT(substring(String,1,2),
                          substring(String,3,2),
                          substring(String,5,2)
                         )
                   , '%y%m%d')
FROM table