php - 将 CSV 信息推送到表时,SQL DATE 类型变量为 NULL
问题描述
我有一个日期为“3/8/2018 9:05:00 AM”格式的 CSV 文件。
当日期被推入列类型为“varchar(30)”的表中时,它变为“3/8/2018 9:05”
当日期被推入列类型为“DATE”的表中时,它变为“0000-00-00”
我希望我的列采用 DATE 格式,以便我可以根据日期进行排序。我的 CSV 日期是否需要采用“YYYY-MM-DD”格式才能正常工作?
或者
有没有办法将我的 SQL 表中的“日期”格式更改为“mm/dd/yyy hh:mi:ss”或只是“mm/dd/yyyy”?
现在,我唯一的选择似乎是将日期按原样以 varchar 格式推送到 SQL 中,将我的所有日期提取并转换为“YYYY-MM-DD”格式并将它们存储在一个数组中,将我的列格式“更改”为“ DATE”,然后将我的格式化日期数组推回新更改的“DATE”列。
仍然是 SQL 的新手,因此将不胜感激任何帮助。
解决方案
将您的日期/记录转储到临时表(临时表)中
在 SELECT 语句中,使用 STR_TO_DATE 日期函数将字符串日期转换为实际日期,并将实际日期插入目标表,即 SELECT STR_TO_DATE('3/8/2018 9:05:00 AM', '%d/%m/ %Y %h:%i:%s %p');
详细信息:INSERT INTO 目标表 (date_col_name) SELECT STR_TO_DATE(date_col_name, '%d/%m/%Y %h:%i:%s %p') FROM temporary_table;
在此处获取有关日期函数的更多信息: https ://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
推荐阅读
- java - 每个实例是否隔离了 Google App Engine tmp 文件夹?
- c# - 在 c# 中限制外部进程的更好方法
- design-patterns - 我们如何使用 Financial Force FFLIB 使用自定义异常
- javascript - 通用搜索管道Angular6
- python - Python:如何更有效地获取特定时区的当前日期
- video - 让 Google Home 在我的 chromecast 上播放 mp4 视频
- jmeter - 从 Jmeter 中的 csv 读取时在请求中附加反逗号?
- javascript - Angular:传递@Input 值以覆盖按钮文本并使用ngClass 添加类的错误
- laravel - Gate::before() 在 Laravel 5.7 中没有被调用
- python - Python继承在孩子上添加新的init