簡體   English   中英

如何將字段從時間戳轉換為日期時間

[英]How convert field from timestamp to datetime

我有一個遺留數據庫,其中有表包含字段:start_date TIMESTAMP,expiration_date DATETIME。

如果在具有不同時區的數據庫上使用數據庫,則會導致某些查詢出現問題。 所以為了避免它們,我想將start_date轉換為DATETIME。 我怎樣才能安全地從TIMESTAMP轉換為DATETIME? 如果我將start_date的類型從TIMESTAMP更改為DATETIME,我不會丟失任何數據嗎? mysql如何將日期TIMESTAMP轉換為DATETIME?

我就是這樣做的:

1)創建一個新的datetime

ALTER TABLE mytable ADD COLUMN mydatetime DATETIME;

2)使用時間戳值更新此列

UPDATE mytable SET mydatetime=FROM_UNIXTIME(UNIX_TIMESTAMP(mytimestamp));

3)完成一些完整性檢查后,刪除timestamp

ALTER TABLE mytable DROP COLUMN mytimestamp;

這對您來說應該足夠安全,因為您可以根據需要保留原始timestamp列。

這是一個sqlfiddle示例。

您可以編寫查詢來查找行,並使用date()函數將start_time字段轉換為DATETIME

然后將字段類型更改為DATETIME

下一個更新字段,其中包含存儲在var中的新值。

例如:

<?PHP
//.. your codes like connection & ...
// my_table is your table name.
$query = mysql_query("SELECT * FROM my_table");
$stored = array();
$i = 0;
while($row = mysql_fetch_assoc($query))
{
    $stored[++$i] = date('Y-m-d H:i:s', $row["start_date"]);
}
mysql_query("alter table my_table modify start_date DATETIME;");
$query = mysql_query("SELECT * FROM my_table");
$i = 0;
while($row = mysql_fetch_assoc($query))
{
    // Id is your primary key.
    mysql_query("UPDATE my_table SET start_date='" . $stored[++$i] . "' WHERE id='" . $row['id'] . "'")
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM