【问题标题】:Unable to delete 90 days older data from mysql via shell script [closed]无法通过 shell 脚本从 mysql 中删除 90 天前的数据[关闭]
【发布时间】:2017-01-31 20:13:06
【问题描述】:

下面的shell脚本:错误选择3 1,2没问题但是mysql删除成功。 shell脚本无法删除

#!/bin/bash

selection=
until [ "$selection" = "0" ]; do
    echo "=============================="
    echo "=========PROGRAM MENU========="
    echo "1 - Show Date and Time"
    echo "2 - Show Data Database"
    echo "3 - Delete data 90 day ago"
    echo ""
    echo "0 - Back to command"
    echo "=============================="
    echo -n "Enter selection : "
    read selection
    echo ""

    case $selection in
        2 ) mysql -u [user] -p[password] -e  'USE eventime;SELECT date1,time1 FROM dt;' ;;
        1 ) dti=$(date '+%d/%m/%Y %H:%M:%S');
            echo "This is Date and Time : " $dti ;;
        3 ) DELETE FROM dt WHERE date1 <('SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m-%d')- INTERVAL 90 DAY'); ;;
        0 ) Ctrl+Z ;;
        * ) echo "Please enter 1, 2, 3 or 0"
    esac
done

输出:选择 3:SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),%Y-%m-%d),-1),%Y-%m-%d)- INTERVAL 90 DAY: command not found...

【问题讨论】:

  • shellcheck.net修复你的脚本中的错误,然后尝试一次
  • 你的脚本有什么问题?

标签: mysql bash shell centos


【解决方案1】:

您的脚本有错误。但是你只能使用 mysql 脚本,很简单。 如果您需要删除行,旧(新)超过 90 天:

SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m-  %d')-INTERVAL 90 DAY;

请按您需要的日期检查结果。如果不是,请正确查询。 所以

delete from dt  where date1 >(SELECT STR_TO_DATE(CONCAT(DATE_FORMAT(now(),'%Y-%m-%d'),'-1'),'%Y-%m-%d')-
INTERVAL 90 DAY);   

如果有疑问,请仔细阅读使用的 sql 函数的帮助。 下次把得到的输出,软件版本等,这样答案会更准确。 您的 bash 脚本将包含 shao-bao、许可证信息和执行查询的命令 mysql :) 祝你好运。

【讨论】:

  • 泰国说 : ขอบคุณครับ = 谢谢 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2022-01-27
  • 2021-11-29
  • 1970-01-01
  • 2017-08-11
  • 2019-09-16
相关资源
最近更新 更多