我有这张 table 。该表有一堆 char 字段,但相关字段(expiredate)包含 test_tmp 表上的一个 char 和 test 表上的一个日期时间。 (表名称已更改以保护客户端。)
在 test_tmp 表中,该字段包含月份-日期对,例如“Aug 10”或“Feb 20”。我用来插入数据的代码是:
INSERT IGNORE INTO test (RECNUM, ORDERNUM, CREATEDATE, EXPIREDATE, FNAME, LNAME)
SELECT RECNUM, ORDERNUM, CREATEDATE,
CAST(CASE WHEN str_to_date(concat(expiredate, ' ', year(now())), '%b %d %Y') <= CURDATE()
THEN str_to_date(concat(expiredate, ' ', 1+year(now())), '%b %d %Y')
ELSE str_to_date(concat(expiredate, ' ', year(now())), '%b %d %Y') END AS DATETIME) AS EXPIREDATE, FNAME, LNAME FROM test_tmp
真正令人困惑的是,如果我运行查询的“SELECT”部分,一切看起来都很好。但是如果我运行整个过程(首先截断测试表),则每行在过期日期中都包含 NULL。
最佳答案
遗憾的是我还无法设置评论。这就是为什么我必须把它写在这里。
在 SQL 语句的末尾有一个 ')' 太多了。当您复制/粘贴此代码时,是否可能会剪切更多内容?
关于sql - 为什么这个 mysql 表在日期时间字段中产生 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1051462/