【问题标题】:I can't change the data_type from TINYTEXT to DATE&/DATETIME我无法将 data_type 从 TINYTEXT 更改为 DATE&/DATETIME
【发布时间】:2020-06-19 00:33:23
【问题描述】:

我正在使用 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 年。)

【问题讨论】:

  • ANSI SQL 标准日期格式(由 MySQL 使用)是 Y-m-d - 如果您将日期字符串转换为该格式,您应该然后能够转换该字段从TINYTEXT 输入到DATE - 然后您可以使用本机日期操作函数,例如DATE_FORMAT
  • 我应该使用 SELECT... FROM 来执行此操作,还是最好使用 ALTER TABLE 来使用 DATE_format?
  • 将现有文本转换为有效日期格式后,您需要ALTER TABLE 是的 - 我认为这可行,但先备份表格,如果出现问题,您最终可能会在更改表格时丢失所有日期。
  • 我正在制作一个备用表进行测试。我不会改变我的工作。我要试试这条线。-
  • 我确实尝试更改格式日期,所以我尝试在互联网上搜索命令。我找到了 getdate() 函数,即使这样它也不起作用。-

标签: php sql date datetime datetime-format


【解决方案1】:

我要做几个假设...

  1. SQL 8.0 你的意思是 MySQL 8.0STR_TO_DATE 是非标准的,因此可能无法与其他数据库服务器一起使用)
  2. TINYTEXT 字段中的日期以%d/%m/%Y %H:%i:%s 格式存储

...为了论证,我要说TINYTEXT 日期字段称为date_string

我要做的是创建一个新的 DATE 列,然后使用 date_string 中的值创建一个 UPDATE 它 - 使用 STR_TO_DATE 函数(就像你尝试过的那样) - 如果这成功删除原始列并可能重命名新的DATE 列。


添加真实日期

我在这里叫它date_date

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


使用 TINYTEXT 字段中的值更新 真实日期

(假设d/m/Y H:i:s格式)

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


只要TINYTEXT 列中的格式与STR_TO_DATE 函数中设置的格式相匹配,那应该 就可以工作。无论如何,您现在将在表格中保留原始日期和转换后的日期,因此您可以检查数据是否正常。

【讨论】:

  • 它适用于 'UPDATE clien SET date_date = STR_TO_DATE(date_string, '%d/%m/%Y %H:%i:%s');'它给了我一个警告,但行发生了变化。我试图将测试表中的真实数据放在新字段中。我尝试了下一行:
  • SELECT date_string update date_date from table; 甚至 With date_date as date_primary INSERT INTO date_string VALUES( __/__/___, __/__/___, etc... ) 不是 __/__/____ 它是真实数据,我把它作为一个列表,就像术语 IN.- 我没有找到好的要求将我所有的测试行放入新字段 date_date。很抱歉我错过了那种简单的方法。我还在学习。
  • @BenoîtCode 抱歉 - 我的英语有点吃力...您是说您的 TINYTEXT 字段中有一些日期格式不正确,您现在已经更正了这些日期,它是在职的 ...?您需要任何进一步的帮助吗?或者您现在还好吗?
猜你喜欢
  • 2016-04-28
  • 1970-01-01
  • 2022-01-06
  • 2011-07-08
  • 2016-09-26
  • 2014-07-19
  • 1970-01-01
  • 2017-02-07
  • 2011-02-24
相关资源
最近更新 更多