[英]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.