使用shell脚本将日期插入到mysql表中

时间:2014-04-25 11:35:22

标签: mysql linux datetime

我是shell脚本的新手,我正在尝试使用bash将当前日期插入数据库表中的列。

这是我到目前为止所做的:

CREATE TABLE DiskUsage (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, DiskUsage VARCHAR(50), DateOfUsage DATETIME);

DiskUsage数据库中成功创建了表shelltest

现在,我正在尝试使用shell脚本在此表中插入值:

dateOfUse=$(TZ=EEST date)
echo "Date: $dateOfUse"
$(df -h > t.txt)
while read Filesystem Size Used Avail Use Mounted on
do
    mysql shelltest -e "insert into DiskUsage (DiskUsage, DateOfUsage) values ('$Use', '$dateOfUse')"
done < t.txt

但是当我尝试执行此脚本时,DateOfUsage的日期值就像这样插入:

所有记录都

0000-00-00 00:00:00

有人可以告诉我我在哪里错了吗? 谢谢:))

2 个答案:

答案 0 :(得分:1)

日期不会在默认情况下吐出您需要的格式,您需要提供格式说明

# date
Fri Apr 25 12:38:45 BST 2014

# date +'%F %T'
2014-04-25 12:38:45

所以在你的脚本中它应该是

dateOfUse=$(TZ=EEST date +'%F %T')

答案 1 :(得分:0)

Mysql默认格式为'yyyy-mm-dd hh:mm:ss',因此您需要在此模式下插入。

另外,为什么你从linux获取日期,你可以放置now()而不是$ date。它会自动插入日期。

即使你可以将它留在mysql上,只需将此数据类型设置为timestamp默认current_timestamp,并且不需要更新此列,因为每当插入行时mysql会自动插入当前日期时间。