【问题标题】:Insert timestamp into mysql column in shell将时间戳插入shell中的mysql列
【发布时间】:2013-01-31 23:38:52
【问题描述】:

以下对我有用:

mysql -u 'root' -h 8.8.8.88 mo -e 'UPDATE `path_last_updated` 
    SET timestamp="2012-01-03 00:00:00"'

但是,以下不是:

TIMESTAMP=`date "+%Y-%m-%d-%T"`
mysql -u 'root' -h 8.8.8.88 mo -e 'UPDATE `path_last_updated` 
    SET timestamp=$TIMESTAMP'

如何将 unix 中的时间戳插入到我的 mysql 表中?

更新

TIMESTAMP=`date "+%Y-%m-%d %T"`
mysql -u 'root' -h 8.8.8.88 mo -e "UPDATE `path_last_updated` 
    SET timestamp='$TIMESTAMP'"

ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use near 'SET 
timestamp='2013-01-31 15:46:00'' at line 1

【问题讨论】:

    标签: mysql linux bash shell unix


    【解决方案1】:

    Shell 变量插值only works between double quotes ("), not single (')。您还在那里有反引号,在双引号字符串中将被视为嵌入式 shell 命令。

    试试:

    mysql -u 'root' -h 8.8.8.88 mo -e "UPDATE \`path_last_updated\`
        SET timestamp='$TIMESTAMP'"
    

    此外,您的日期命令格式中有一个额外的破折号 (-),位于 %d 和 %T 之间。

    【讨论】:

    • 好的,谢谢。前半部分现在对我有用——它正在使用变量执行。但无论出于何种原因,它似乎都不是有效的 SQL 语句。请查看更新后的问题。
    • 看来你已经把它整理好了。我在反引号上添加了评论。
    【解决方案2】:

    ALTER TABLE 更容易:

    ALTER TABLE path_last_updated ADD date_entered timestamp DEFAULT CURRENT_TIMESTAMP
    

    然后在shell中:

    mysql -u 'root' -h 8.8.8.88 mo -e "UPDATE path_last_updated SET timestamp=DEFAULT"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多