Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.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/9/javascript/375.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
Php Mysql日期更新不工作_Php_Mysql_Sql_Sql Update - Fatal编程技术网

Php Mysql日期更新不工作

Php Mysql日期更新不工作,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,我在更新mysql表时遇到了一个问题。我有两个字段real_date(类型:varchar(20)),event_date(类型:date())。下面是一些数值 real_date event_date event_date(Need to b updated.) 1985-03-20 0000-00-00 1971-03-20 1989-08-20 0000-00-00 1971-08-20 1993-04-30 0000-00-00 1971-04-30 我

我在更新mysql表时遇到了一个问题。我有两个字段real_date(类型:varchar(20)),event_date(类型:date())。下面是一些数值

real_date   event_date  event_date(Need to b updated.)
1985-03-20  0000-00-00    1971-03-20
1989-08-20  0000-00-00    1971-08-20 
1993-04-30  0000-00-00    1971-04-30
我想将event_date更新为如上所示。从实际日期中提取月份和日期,并将年份保留为1971年。我正在使用下面的查询,但它不工作,你能帮我吗

Query1 : Update table set event_date= STR_TO_DATE(concat('1971','-',DATE_FORMAT(real_date, "%m-%d")),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'

Query2 : Update table set event_date= STR_TO_DATE(concat('1971','-',SUBSTR(real_date, 6, 5)),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'

Query3 : Update table set event_date=concat('1971-',DATE_FORMAT(real_date, "%m-%d")) where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'
Query1:Update table set event_date=STR_TO_date(concat('1971','-',date格式(real_date,“%m-%d”),“%Y-%m-%d”),其中real_date不为NULL且real_date!='0000-00-00'和实际日期',事件日期='0000-00-00'
查询2:更新表集event_date=STR_TO_date(concat('1971','-',SUBSTR(real_date,6,5)),“%Y-%m-%d”),其中real_date不为NULL,real_date!='0000-00-00'和实际日期',事件日期='0000-00-00'
查询3:更新表集事件\u日期=concat('1971-',日期格式(实际日期,%m-%d)),其中实际日期不为空且实际日期!='0000-00-00'和实际日期',事件日期='0000-00-00'
但以上都不起作用。请帮帮我。

使用

Query1 : Update table set event_date= STR_TO_DATE(concat('1971','-',DATE_FORMAT(real_date, "%m-%d")),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'

Query2 : Update table set event_date= STR_TO_DATE(concat('1971','-',SUBSTR(real_date, 6, 5)),'%Y-%m-%d') where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'

Query3 : Update table set event_date=concat('1971-',DATE_FORMAT(real_date, "%m-%d")) where real_date IS NOT NULL AND real_date != '0000-00-00' AND real_date <> '' AND event_date='0000-00-00'
UPDATE TableName 
SET    event_date = CONCAT('1971-', DATE_FORMAT(real_date, '%m-%d')) 
WHERE  real_date IS NOT NULL OR 
       real_date != '0000-00-00' OR 
       real_date <> '' OR 
       event_date = '0000-00-00'
更新表名
设置事件日期=CONCAT('1971-',日期格式(实际日期,%m-%d'))
其中实际日期不为NULL或
真正的约会0000-00-00'或
真实日期“”或
事件日期='0000-00-00'
    • 这可能会对您有所帮助

      update test set event_date = Date_format(Concat('1971','-', DATE_FORMAT( real_date,  '%m-%d' ), '%Y', '%Y-%m-%d');
      
      看看MySQL

      试试这个:

      UPDATE table
      SET event_date =
        STR_TO_DATE(
          CONCAT('1971-', DATE_FORMAT(STR_TO_DATE(real_date, '%Y-%m-%d'), '%m-%d')),
          '%Y-%m-%d'
        )
      WHERE real_date IS NOT NULL AND
        real_date != '0000-00-00' AND
        real_date <> '' AND
        event_date = '0000-00-00'
      
      更新表
      设置事件日期=
      截止日期(
      CONCAT('1971-',日期格式(STR_TO_DATE(实际日期,'%Y-%m-%d'),'%m-%d')),
      “%Y-%m-%d”
      )
      其中,real_date不为NULL,并且
      真正的约会0000-00-00'和
      真实日期“”和
      事件日期='0000-00-00'
      

      基本思想是:将现有字符串转换为日期。使用format从中提取月份和日期,并从中生成一个字符串。然后将新字符串转换为日期类型。您应该熟悉MySQL。

      也许您所有的更新代码都是正确的。实际上,它会更新
      表名中的
      事件日期
      ,但是当您想使用
      选择
      语句来显示结果时,应该使用
      格式日期
      来显示
      事件日期

      所以不是

      SELECT * FROM tableName
      
      使用:


      我的意思是在
      UPDATE
      语句中,使用任何日期格式函数格式化日期字段是没有意义的。它仅在
      SELECT
      语句中有意义。

      Ohh抱歉,忘记包含此查询。我试过这个,但它不工作,甚至我觉得这应该工作,但不幸的是,它没有更新任何行。在那里我可以获取这些数据。刚刚意识到问题所在。事实上,问题在于数据。。。带有日期格式的闰年的一些概念。否则,任何其他查询都会起作用。这将不起作用,因为concat()返回字符串,而event_date的数据类型是date()。@KumarSoneta请记住mysql是隐式的。因此,它悄悄地将字符串转换为日期。见小提琴@JW,请核对我的答案,我想知道你作为专家的意见。编辑我的帖子以删除无效分号。很抱歉。