如何将varchar数据类型转换为datetime数据类型而不丢失数据

时间:2018-05-21 09:20:35

标签: php mysql sql

my query(select invoice_date from pr_tax_intra where invoice_date between '03-05-2018' and '05-05-2018')

invoice_date数据类型varchar->(invoice_date varchar(55))

输出图片:

enter image description here
enter image description here此图片仅选择5个月的数据,但同时显示4个月和5个月的数据......

我正在使用mysql数据库

我已将日期存储为varchar(255)数据类型,日期格式为dd / MM / yyyy现在我必须将其转换为日期数据类型,您可以帮我查询吗?

我有780条记录,每条记录包含dd / MM / YYYY格式的日期,但由于varchar数据类型,我无法在日期执行计算,因此我必须转换为日期而不会丢失数据。

请帮帮我

4 个答案:

答案 0 :(得分:1)

您可以使用myqsl STR_TO_DATE()函数

SELECT STR_TO_DATE("10 August 2017", "%d %M %Y")

答案 1 :(得分:0)

//用于测试

SELECT DATE_FORMAT(STR_TO_DATE('21/05/2018', '%Y/%m/%d') 
 ,'%d/%m/%Y')

在您的情况下使用以下查询

SELECT DATE_FORMAT(STR_TO_DATE(YourVarcharDateColumn, '%Y/%m/%d') 
 ,'%d/%m/%Y') from YourTable

答案 2 :(得分:0)

你可以这样做, 获取所有记录,然后应用while循环

$ListContent = mysqli_query($conn, "SELECT `date_filed` FROM table_name") or die(mysqli_error($conn)." Error in query"); // $conn is connection object
while($arr = mysqli_fetch_array($ListContent)){
    $currentDate    =   $arr['date_filed'];
    $currentRowID   =   $arr['id']; // Unique id column name
    $newDate    =   date("Y-m-d", strtotime($currentDate)); 

    $sqlUpdate  =   "Update table_name SET `date_filed` ='".$newDate."' WHERE id=".$currentRowID;

    mysqli_query($conn, $sqlUpdate) or die(mysqli_error($conn)." Error in update query");


}

这将使您的所有记录在" yyyy-mm-dd"格式然后将您的字段更改为日期类型

答案 3 :(得分:-1)

SQL Server(MSSQL)

SELECT FORMAT(YourDateColumn,'dd-MM-yyyy') from yourTable