MySQL DATETIME 在一个 table 中显示正确的日期,但在另一个 table 中显示的时间不正确(总是午夜)?

MySQL DATETIME shows correct date, but incorrect time (always midnight) in one table but not in another table?

我正在使用 MySQL 的 DATETIME 在数据库中的两个不同 table 中设置日期和时间(使用 PHP)。其中一个实例在 users table 中,并记录该人注册帐户的时间以及他们上次登录的时间。另一个用法在单独的 messages table(在同一个数据库中)当一个用户向另一个用户发送消息时记录。

虽然MySQLDATETIME的代码在每个table上都是一样的,但是在messagestable上记录的是日期,但是时间发送消息总是恰好在午夜,例如2021-12-06 00:00:00

在 PHPmyAdmin 中,我使用 DATETIME,没有默认值,并且在两个 table 中都不为空。

每个用法的 PHP 准备语句如下。如您所见,我在需要数据和时间的地方使用 current_date 函数。

EXAMPLE 1 users table(数据库中正确记录了时间)。注意:一些变量如 fname 来自表单元素。为了简化代码,我没有包含表单代码。

$passwordHash = password_hash($pword, PASSWORD_DEFAULT);

$sql = "INSERT INTO lj_users 
            (firstname, lastname, email, username, password, 
            date_registered, last_login, active, profile_image, 
            permissions) 
        VALUES (:firstname, :lastname, :email, :username, :password, 
                current_date, current_date, 0, '', 
                'standard' )";

$stmt = $connection->prepare($sql);

$stmt->bindParam(':firstname', $fname);
$stmt->bindParam(':lastname', $lname);
$stmt->bindParam(':email', $email);
$stmt->bindParam(':username', $uname);
$stmt->bindParam(':password', $passwordHash);

$stmt->execute();   

示例 2(时间未正确记录在数据库中)

$message_sql = "INSERT INTO lj_messages 
                    (message_title, message_body, dm_recipient_id, 
                    dm_sender_id, message_date) 
                VALUES (:message_title, :message_body, :dm_recipient_id, 
                        :dm_sender_id, current_date )";

$stmt = $connection->prepare($message_sql);

$stmt->bindParam(':message_title', $dm_title);
$stmt->bindParam(':message_body', $dm_body);
$stmt->bindParam(':dm_recipient_id', $dm_recipient_id);
$stmt->bindParam(':dm_sender_id', $dm_sender_id);
$stmt->execute();

我完全不知道为什么会这样。

current_date returns 只是一个日期:

mysql> select current_date; 
+--------------+                                                                                                                                                                                                            
| current_date |                                                                                                                                                                                                            
+--------------+                                                                                                                                                                                                            
| 2021-12-07   | 
+--------------+

您想要 now(),其中 returns 日期时间。

mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2021-12-07 09:33:40 |
+---------------------+