我有以下6个整数db列:
我需要一个查询,为每一行获取这些值,将它们组合成DATETIME并放入另一列。
答案 0 :(得分:1)
您可以将它们全部放入字符串中,然后将该字符串转换为datetime
,如下所示:
update tbl
set datecol = cast(cast(`year` as varchar) + '-' +
cast(`month` as varchar) + '-' +
cast(`day` as varchar) + ' ' +
cast(`hour` as varchar) + ':' +
cast(`minute` as varchar) + ':' +
cast(`second` as varchar) as datetime)
虽然,我认为MySQL使用concat
,所以它会是:
cast(concat(cast(`year` as varchar), '-', cast(`month` as varchar), '-',...) as datetime)
答案 1 :(得分:1)
它可能不是最有效的,但你可以这样做:
UPDATE my_table
SET my_date = CONCAT(my_year, '-', my_month, '-', my_day, ' ',
my_hour, ':', my_mins, ':', my_seconds)
WHERE ...
答案 2 :(得分:0)
您可以将CONCAT数据一起用于制作看似DATETIME值的内容
CONCAT(year,'-', month, '-', day,' ',hour, ':', min, ':', sec)
虽然您可以直接使用它,但您也可以使用STR_TO_DATE将其变为真正的DATETIME,例如
STR_TO_DATE(
CONCAT(year,'-', month, '-', day,' ',hour, ':', min, ':', sec),
'%Y-%m-%d %H:%i:%S');
答案 3 :(得分:0)
CREATE TABLE `x` (
`y` int(4) DEFAULT NULL,
`m` int(4) DEFAULT NULL,
`d` int(4) DEFAULT NULL,
`h` int(4) DEFAULT NULL,
`i` int(4) DEFAULT NULL,
`s` int(4) DEFAULT NULL
);
INSERT INTO x SELECT 2009, 9, 1, 9, 59, 59;
SELECT STR_TO_DATE(CONCAT(y,'-', m,'-', d,'-', h,'-', i,'-', s), '%Y-%m-%d-%h-%i-%s') FROM x;