簡體   English   中英

我無法將 data_type 從 TINYTEXT 更改為 DATE&/DATETIME

[英]I can't change the data_type from TINYTEXT to DATE&/DATETIME

我正在使用 SQL 8.0 並且仍在學習,我對它做了一些很好的改變。 現在我被日期困住了,它們在導入的TINYTEXTdata_type中,其他每個字段都是主鍵的VARCHAR(60)INT ,我在這方面做得很好,但我堅持該data_type日期。

我從第一天起就這樣做了:它適用於date類型

SELECT *, DATE_FORMAT(column_name , "%d/%m/%Y %H:%i:%s")
FROM table_name; 

(對於日期時間它不起作用。)

現在我試過這個:

INSERT INTO database_test.table_test.field_name(today) 
VALUES(STR_TO_DATE('07-25-2012','%m-%d-%y') ) 

而不是%m-%d%y ,我需要這種歐洲格式: %d/%m/%Y用於 DATE。 %d/%m/%Y %H:%i:%s為我的DATETIME 兩者都在TINYTEXT (注意:對於未來的“DATE”數據類型,它們的日期是從 1899 年到 2099 年。)

我要做幾個假設……

  1. SQL 8.0是指MySQL 8.0STR_TO_DATE是非標准的,因此可能不適用於其他數據庫服務器)
  2. TINYTEXT字段中的日期以%d/%m/%Y %H:%i:%s格式存儲

...為了論證,我將說TINYTEXT日期字段稱為date_string

我會做的是創建一個新的DATE列,然后UPDATE從價值它date_string -使用STR_TO_DATE功能(如你試過) -如果這就是成功刪除原始列,並且可能重命名新DATE列。


添加真實日期

我在這里稱它為date_date

ALTER TABLE `table_test` ADD `date_date` DATE NOT NULL AFTER `date_string`;


使用 TINYTEXT 字段中的值更新實際日期

(假設d/m/YH:i:s格式)

UPDATE `table_test` SET `date_date` = STR_TO_DATE(`date_string`, '%d/%m/%Y %H:%i:%s');


只要您的TINYTEXT列中的格式與STR_TO_DATE函數中設置的格式相匹配,這應該有效。 無論如何,您現在將在表中擁有原始日期和轉換日期,因此您可以檢查數據是否正常。

暫無
暫無

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

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