为什么这个mysql表在datetime字段中生成空值?
我有这张桌子。该表有一组字符字段,但有问题的字段(expiredate)在test_tmp表中包含一个字符,在test表中包含一个datetime。(已更改表名以保护客户端。) 在test_tmp表中,该字段包含一个月日期对,如“Aug 10”或“Feb 20”。我用来插入数据的代码是:为什么这个mysql表在datetime字段中生成空值?,sql,mysql,drupal,null,Sql,Mysql,Drupal,Null,我有这张桌子。该表有一组字符字段,但有问题的字段(expiredate)在test_tmp表中包含一个字符,在test表中包含一个datetime。(已更改表名以保护客户端。) 在test_tmp表中,该字段包含一个月日期对,如“Aug 10”或“Feb 20”。我用来插入数据的代码是: INSERT IGNORE INTO test (RECNUM, ORDERNUM, CREATEDATE, EXPIREDATE, FNAME, LNAME) SELECT RECNUM, ORDERNU
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
将忽略插入测试(RECNUM、ORDERNUM、CREATEDATE、EXPIREDATE、FNAME、LNAME)
选择RECNUM、ORDERNUM、CREATEDATE、,
CAST(CASE WHEN str_to_date(concat(expiredate),,year(now()),“%b%d%Y”)很遗憾,我还不能设置注释。这就是为什么我必须在这里写它的原因
在SQL语句的末尾,您有一个“')到更多。复制/粘贴此代码时是否有更多的剪切?很遗憾,我还无法设置注释。这就是为什么我要写在这里
在SQL语句的末尾,您有一个“')到更多。复制/粘贴此代码时是否有更多剪切?为了测试您的查询,我运行了以下命令:
SELECT CAST(CASE WHEN str_to_date(concat('Jan 5', ' ', year(now())), '%b %d %Y') <= CURDATE()
THEN str_to_date(concat('Jan 5', ' ', 1+year(now())), '%b %d %Y')
ELSE str_to_date(concat('Jan 5', ' ', year(now())), '%b %d %Y') END AS DATETIME) AS EXPIREDATE;
选择CAST(CASE WHEN stru to_date(concat('Jan 5','',year(now()),'%b%d%Y'))为了测试您的查询,我运行了以下命令:
SELECT CAST(CASE WHEN str_to_date(concat('Jan 5', ' ', year(now())), '%b %d %Y') <= CURDATE()
THEN str_to_date(concat('Jan 5', ' ', 1+year(now())), '%b %d %Y')
ELSE str_to_date(concat('Jan 5', ' ', year(now())), '%b %d %Y') END AS DATETIME) AS EXPIREDATE;
SELECT CAST(str_to_date(concat('Jan 5','',year(now()),'%b%d%Y')时的大小写)您是否收到任何错误消息
你能把“忽略”这个词放在一边,然后看看你有没有留言吗
根据报告:
如果未指定IGNORE,将触发错误的数据转换将中止语句。使用IGNORE,将无效值调整为最接近的值并插入;将生成警告,但语句不会中止
这种调整可能发生在您的情况下。此过期日期到底是哪种字段?您是否收到任何错误消息
你能把“忽略”这个词放在一边,然后看看你有没有留言吗
根据报告:
如果未指定IGNORE,将触发错误的数据转换将中止语句。使用IGNORE,将无效值调整为最接近的值并插入;将生成警告,但语句不会中止
这样的调整可能发生在你的情况下。这个过期日期到底是什么类型的字段?嗯,我终于找到了我自己问题的答案
注意我是如何在问题上加上“drupal”标记的?查询是通过drupal进行的……如果不想用%字符替换数据,则需要将其转义。因此,str_to_date(concat(expiredate),,,year(now()),“%b%d%Y”)
实际上需要是str_to_date(concat(expiredate),,year(now()),“%%b%%d%%Y”)
谢谢大家的建议。我终于找到了我自己问题的答案
注意我是如何在问题上加上“drupal”标记的?查询是通过drupal进行的……如果不想用%字符替换数据,则需要将其转义。因此,str_to_date(concat(expiredate),,,year(now()),“%b%d%Y”)
实际上需要是str_to_date(concat(expiredate),,year(now()),“%%b%%d%%Y”)
谢谢大家的建议。是的,当我对数据单独运行“选择”查询时,我肯定会得到很好的日期。是的,当我对数据单独运行“选择”查询时,我肯定会得到很好的日期。我记得运行时没有忽略一次,也没有发现任何错误,但我会在周一重试。在sourc上过期e table是MMM DD,类似于'Aug 10',目标表上的expiredate是datetime字段。我记得运行它时没有忽略一次,也没有注意到任何错误,但我会在周一重试。源表上的expiredate是MMM DD,类似于'Aug 10',目标表上的expiredate是datetime字段。