当前位置: 首页 > 知识库问答 >
问题:

将Varchar列中的所有数据转换为日期格式

穆承运
2023-03-14

我正在处理一个带有列“到期日期”的表,作为所有数据格式为DD/MM/YYYY的varchar。

表的创建者在此到期日期列中使用了错误的类型,现在客户端需要过滤并显示当前日期之前和之后的所有记录作为时间。这意味着需要将类型更改为date或datetime类型才能使用CURDATE()函数

但是,值的当前格式不满足并且不允许类型更改,除非格式更改为YYYY-MM-DD(或类似)。

是否有任何方法可以批量格式化此列中的值,并且仅此列就有数千个条目,并且逐个格式化将非常耗时。

共有2个答案

景胜涝
2023-03-14

你需要的是更新这个专栏,但在做之前,我建议你检查一下结果是否是你想要的。

select replace(expiry_date, '/', '-') new_expiry_date
  from table_name

如果返回所需的结果,则可以运行以下更新:

update table_name
   set expiry_date = replace(expiry_date, '/', '-')

当然,您需要用列和表的名称替换过期日期和表名。

龚鸿羽
2023-03-14

让我假设您正在使用MySQL。

也许最简单的方法是添加一个生成的列,该列是日期:

alter table t add column expiry_date_date as
    (str_to_date(expiry_date, '%d/%m/%Y'));

您还可以修复数据:

update t
    set expiry_date = str_to_date(expiry_date, '%d/%m/%Y');

这将隐式地将str_to_date()的结果转换为YYYY-MM-DD格式的日期。

更重要的是,您可以执行以下操作:

alter table t modify column expiry_date date;

这里有一个db

您可以在其他数据库中执行类似的操作,但确切的代码有点不同。

 类似资料:
  • 我将客户数据转换成DB表,其中Varchar列类型中的几个单元格值包含date,而不包含date。包含特定格式的日期的文件需要转换为另一个文件,以便进一步用于数据分析作业。我尝试了下面的查询,但它显示了没有日期的单元格的错误。我如何解决这个问题? 基本上,我想去掉实际时间,加上000000来代替实际时间和日期。 查询: 错误: 代码:1292截断了不正确的日期时间值:“EVN”

  • 问题内容: 我需要将1/9/2011的varchar值转换为mySQL中的日期,并且只需要月份和年份。这样我就可以使用该功能(因此,我需要将以上内容转换为201101)。 我已经尝试过使用函数的各种方式: 但是我得到了奇怪的结果…(例如:2009-01-00) 我做错了什么? 问题答案: 要么 很难从你的例子中看出

  • 问题内容: 我在mySQL 5.1中有一个数据类型的日期列。如何将其转换为DATE? 这是我到目前为止所拥有的- 得到这个 错误-#1064-您的SQL语法有错误;查看与您的MySQL服务器版本相对应的手册以获取正确的语法,以在’FROM 7 FOR 4附近使用) 请帮忙。 问题答案: 您可以使用MySQL的功能 尽管我怀疑您使用Unix时间戳会更轻松

  • 我正在尝试用varchar列中的更新日期列 这里,是varchar数据类型,是日期数据类型。有多种类型的日期格式,例如,09302012, 9/30/2012, 2012-09-30和更多不同的类型 如何编写单个查询以在单个查询中使用各种类型的日期格式更新列。 已编辑::: 抱歉搞砸了...我刚刚意识到这些是ssis包中的单独(部分)更新... 我们有不同类型(6)的品牌,每个品牌都会发送不同日期

  • 问题内容: 我正在使用需要json日期格式的API。 我需要转换我的JavaScript日期 1970年1月17日星期六格林尼治标准时间+0100(浪漫标准时间) 以json日期格式 /日期(1405699200)/ 问题答案: 列各项可以吗?

  • 问题内容: 我有一个输出数据数组的PHP脚本。然后将其转换为使用函数。 我的问题是我的数组中有一个日期,但日期格式不正确。 我怎样才能在PHP中转换它呢? 代替上面的日期,我需要等效的JavaScript函数 新的Date() 当我输出上述内容时,我得到以下内容:“ Fri Jun 01 2012 11:08:48 GMT + 0100(GMT Daylight Time)”但是,如果我将PHP日