我对shell脚本完全陌生,我正在尝试使用bash将当前日期插入数据库表中的列中。
以下是我迄今为止所做的:
CREATE TABLE DiskUsage (id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, DiskUsage VARCHAR(50), DateOfUsage DATETIME);
在shelltest
数据库中成功创建了表DiskUsage
。
现在,我尝试使用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
。
有人能告诉我哪里搞错了吗?感谢:)
Date默认情况下不会在这里显示出您需要的格式,您需要给出一个格式指令
# date
Fri Apr 25 12:38:45 BST 2014
# date +'%F %T'
2014-04-25 12:38:45
所以在你的脚本中应该是
dateOfUse=$(TZ=EEST date +'%F %T')
Mysql默认格式为'yyyy-mm-dd hh:mm:ss',因此您需要在此模式下插入。
此外,为什么您要从linux中获取日期,您可以直接放置now()而不是$date。它将自动插入日期。
即使您可以将其保留在mysql上,也只需将此数据类型设置为timestamp默认的currenttimestamp,并且不需要更新此列,因为只要插入行,mysql就会自动插入当前日期时间。