我有一个用PHP编写的上传脚本,它负责处理CSV中的数据,并将其插入到每个上传的CSV的特定表格中。
我需要解决一个问题,即不能正确插入来自不同日期格式的数据。除了时间之外,它需要涵盖所有日期格式并保存为YYYY-MM-DD(2016-09-27)。 它看起来像这样:
Database table:
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
USER VARCHAR(50) NOT NULL,
Date DATE,
Time TIME
PHP/MySQL
$stmt = $conn->prepare("INSERT INTO ".$table_name." (User, Date,Time) VALUES (?,?,?)");
$stmt->bind_param("sss", $user, $date,$time);
$user = $data_array[$i][0];
$date = $data_array[$i][1];
$time = $data_array[$i][2];
$stmt->execute();
我一直在阅读关于STR_TO_DATE但我不确定在这种情况下我应该在哪里使用它。
答案 0 :(得分:0)
首先我注意到你在使用bind_param()之后定义了变量
Sub AlignLast3Columns()
Dim lColumn As Long, x As Long, y As Long, z As Long
Dim Target As Range
Dim Data()
With Worksheets("After")
x = .Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
y = .Cells.Find("*", searchorder:=xlByColumns, searchdirection:=xlPrevious).Column
Set Target = .Range("A1", .Cells(x, y))
End With
Data = Target.Value2
lColumn = UBound(Data, 2)
For x = 1 To UBound(Data, 1)
If IsEmpty(Data(x, lColumn)) Then
For y = lColumn To 1 Step -1
If Not IsEmpty(Data(x, y)) Then
For z = 0 To 2
Data(x, lColumn - z) = Data(x, y - z)
Data(x, y - z) = ""
Next
Exit For
End If
Next
End If
Next
Target.Value2 = Data
End Sub
像这样:
$user $date $time
下一步: 您可以使用MySQL日期格式函数。
请参阅:https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
使用此功能,您可以将字符串日期转换为有效的MySQL日期。
$user = $data_array[$i][0];
$date = $data_array[$i][1];
$time = $data_array[$i][2];
$stmt->bind_param("sss", $user, $date,$time);
将格式替换为数据格式
手册示例:VALUES(?,DATE_FORMAT('?','format'),?)