嗨,我想从一个字符串中组合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');
答案 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