我正在寻找一种方法来更改列的数据类型。目前,在我的数据库中,日期列类型被定义为varchar,我需要将它们转换回日期类型。
知道该怎么做吗?
答案 0 :(得分:4)
您需要根据您的确切表格结构进行调整,但需要像
那样CREATE TABLE temp (startdate varchar(255), stuff varchar(255));
INSERT INTO temp
SELECT startdate,stuff
FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ALTER COLUMN startdate DATETIME NOT NULL;
INSERT INTO mytable
SELECT CAST(startdate AS DATETIME), stuff FROM temp;
DROP TABLE temp;
答案 1 :(得分:2)
首先,使用类型数据创建新列 接下来,运行更新查询,使用旧列的值填充新列,并根据需要应用任何转换 接下来,删除旧列 最后,将新列重命名为旧列
答案 2 :(得分:1)
答案 3 :(得分:0)
Mysql默认日期格式为:YYYY-MM-DD。如果你试图插入日期,就像你实际做的那样,日期将插入这些值:000-00-00,给你一个暗示mySql可接受的日期格式。
答案 4 :(得分:0)
想与SQL Server用户共享此内容。对我来说,这种方法更方便,更安全。
确保要转换的表中没有无效的Datetime格式。在这里尝试以下格式:https://www.w3schools.com/sql/trysqlserver.asp?filename=trysql_func_sqlserver_cast3 <---您需要彻底检查,否则执行下面的命令将会出错。
执行此命令:
更新myTable SET NewDate = CAST(OldDate AS日期时间) (OldDate <>'')和(OldDate不为NULL)-确保只转换需要的内容,否则会出错。
答案 5 :(得分:0)
如果您的列的字段为VARCHAR
,并且将日期存储为DD-MM-YYYY
,那么我们必须按照以下PHP代码将日期转换为YYYY-MM-DD
格式。
$cd = array();
$cd1 = array();
$cdf = array();
$getdata = mysqli_query($link,"SELECT columnname FROM tablename");
while($row=mysqli_fetch_array($getdata))
{
$cd = $row['columnname'];
$cd1 = strtotime($cd);
$cdf = date('Y-m-d',$cd1);
mysqli_query($link,"UPDATE tablename SET columnname =
REPLACE(columnname,'$cd','$cdf')");
}
运行此PHP代码后,在MySQL表中将列的数据类型更改为'DATE'
。
它对我有用,而不会丢失或截断数据。