Как преобразовать тип данных varchar в тип данных datetime без потери данных

0
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))

выходные изображения:

введите описание изображения здесь
введите изображение здесь. Это изображение отображает только данные за 5 месяцев, но показывается в 4 и 5 месяцах данных...

Я использую базу данных mysql

Я сохранил дату как тип данных varchar (255), а формат даты - dd/MM/yyyy, теперь мне нужно преобразовать его в тип данных даты, может ли помочь мне в запросе?

У меня есть 780 записей, и каждый recod содержит дату в формате dd/MM/YYYY, но из-за типа данных varchar я не могу выполнить вычисление по дате, поэтому мне нужно конвертировать в дату без потери данных.

Помогите мне, пожалуйста

  • 1
    Какие базы данных вы используете? (Когда речь идет о дате / времени, многие продукты далеки от соответствия ANSI SQL.)
  • 0
    база данных mysql (phpmyadmin)
Показать ещё 3 комментария
Теги:

4 ответа

1

Вы можете использовать myqsl STR_TO_DATE()

SELECT STR_TO_DATE("10 August 2017", "%d %M %Y")
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", а затем изменит ваше поле на тип даты

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
0

SQL Server (MSSQL)

SELECT FORMAT(YourDateColumn,'dd-MM-yyyy') from yourTable
  • 0
    Не полезно, когда OP использует MySQL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню