我做的有点反了:
因此,我将datetime列转换为varchar(有正当的理由)。我的问题是《时代》杂志上所有的0也都不同。试图使用concat()剥离字符串。
Ex: 2013-12-12 00:00:00
输出:2013-12-12
问题是,并不是所有的varchar都以"00:00:00"结尾。其中一些是在系统切换到varchar而不是datetime之后放入的,所以我可以从字符串中删除-X,而不首先检查它是否大于12个字符。
我在想
UPDATE logic_intern_report_link SET comp_date=SUBSTR(comp_date,0,10)
然而,这最终会删除该列的所有值。
我同意JW的观点。的解决方案,但只是回答你的问题:在原始查询中获得空值的原因是SUBSTR()函数需要一个基于1的起始索引,而不是作为第二个参数提供的0。试试这个
SELECT SUBSTR(comp_date,1,10) FROM logic_intern_report_link
查看差异
(详细说明:SUBSTR()函数也接受负起始索引)
UPDATE logic_intern_report_link
SET comp_date = DATE_FORMAT(DATE(comp_date), '%Y-%m-%d')
update logic_intern_report_link
set comp_date = REPLACE(comp_date, ' 00:00:00', '')