#!/bin/bash # 高效格式化数据库日期的Shell脚本 date_input="$1" formatted_date=$(date -d "$date_input" +"%Y-%m-%d %H:%M:%S") echo "格式化后的日期: $formatted_date" # 批量处理数据库导出文件 awk -F'|' '{print $1 "|" strftime("%Y-%m-%d", mktime(substr($2,1,4), substr($2,5,2), substr($2,7,2), substr($2,12,2), substr($2,15,2), substr($2,18,2)))}' database_export.txt > formatted_dates.txt
CSDN博客 - Shell日期格式化技巧
在数据库操作中,日期格式不统一是常见问题。使用Shell脚本可以快速将各种日期格式转换为标准ISO格式。date命令是核心工具,支持 -d 参数解析多种输入格式。例如:date -d "2023/12/01 14:30" +"%Y-%m-%d %H:%M:%S" 输出 2023-12-01 14:30:00。对于批量处理,可以结合sed和awk命令处理CSV或TSV文件中的日期列。
Linux中国 - 数据库日期标准化脚本
以下是一个实用脚本,用于格式化MySQL导出的日期: while read line; do old_date=$(echo $line | cut -d',' -f3) new_date=$(date -d "$old_date" +"%Y-%m-%d" 2>/dev/null || echo "INVALID") echo ${line/$old_date/$new_date} done < mysql_dump.csv > mysql_formatted.csv 这个脚本能处理数百万行数据,速度很快。
博客园 - Shell处理Oracle日期字段
Oracle数据库常输出如 "01-DEC-23" 的日期格式。Shell脚本转换如下: convert_date() { date -d "$(echo $1 | sed 's/\([0-9]\{2\}-[A-Z]\{3\}-[0-9]\{2\}\)/\1/' )" +"%Y-%m-%d" 2>/dev/null } for date in $(cat oracle_export.txt); do echo $(convert_date $date) done
知乎专栏 - 高效数据清洗脚本
在大数据管理中,日期格式化是关键步骤。Shell的优点是无需额外依赖,直接在服务器上运行。示例代码: sed -i 's/\([0-9]\{4\}\/[0-9]\{2\}\/[0-9]\{2\}\)/$(date -d & +%Y-%m-%d)/g' file.csv 但更推荐用awk循环处理以避免转义问题。
SegmentFault - PostgreSQL日期格式化
PostgreSQL的timestamp格式多样,Shell脚本一键标准化: #!/bin/bash psql -d mydb -c "COPY (SELECT id, to_char(created_at, 'YYYY-MM-DD HH24:MI:SS') FROM table) TO 'output.csv' CSV HEADER;" 然后用date命令二次验证和修正。
简书 - 日常运维日期脚本
运维中常用此脚本格式化日志日期: logrotate_date() { sed 's/\[\([0-9]\{2\}\/[A-Za-z]\{3\}\/[0-9]\{4\}:[0-9:]\+\)\]/['$(date -d "&" +%Y-%m-%dT%H:%M:%S%z)']/g' access.log } 大大提升了数据查询效率。
FAQ
Q: Shell date命令不支持的日期格式怎么办?
A: 使用自定义函数解析,如将 "DD/MM/YYYY" 转换为标准格式后再用date -d。
Q: 如何处理时区问题?
A: 添加 TZ=UTC 到date命令,如 date -d "$date" +"%Y-%m-%d %H:%M:%S" -u。
Q: 脚本处理大文件时内存不够?
A: 用while read循环逐行处理,避免awk一次性加载。
Q: Windows上怎么用?
A: 用Git Bash或WSL运行Shell脚本,date命令兼容性好。