Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个mysql表在datetime字段中生成空值?_Sql_Mysql_Drupal_Null - Fatal编程技术网

为什么这个mysql表在datetime字段中生成空值?

为什么这个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

我有这张桌子。该表有一组字符字段,但有问题的字段(expiredate)在test_tmp表中包含一个字符,在test表中包含一个datetime。(已更改表名以保护客户端。)

在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
将忽略插入测试(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字段。