2

我做的事情有点倒退:

所以我已经将一列从 datetime 转换为 varchar (有正当理由)。我的问题是来自 TIME 的所有 0 也不同了。尝试使用 concat() 剥离字符串。

例如:2013-12-12 00:00:00

输出:2013-12-12

问题是,并非所有的 varchars 都有“00:00:00”结尾。其中一些是在系统转到 varchar 而不是 datetime 之后放入的,所以我可以从字符串中删除 say -X 而无需首先检查它是否大于 12 个字符。

我在想类似的东西

UPDATE logic_intern_report_link SET comp_date=SUBSTR(comp_date,0,10)

但是,这最终会删除该列的所有值。

4

3 回答 3

8

我同意 JW. 的解决方案,但只是为了回答您的问题:您使用原始查询获得空值的原因是 SUBSTR() 函数需要基于 1 的起始索引,而不是您提供的零值第二个参数。试试这个

SELECT SUBSTR(comp_date,1,10) FROM logic_intern_report_link

看看有什么不同。

(为了全面披露:SUBSTR() 函数也将接受一个负的起始索引)

于 2013-03-18T15:34:12.313 回答
5
UPDATE  logic_intern_report_link 
SET     comp_date = DATE_FORMAT(DATE(comp_date), '%Y-%m-%d')
于 2013-03-18T15:27:18.180 回答
0
update logic_intern_report_link 
set comp_date = REPLACE(comp_date, ' 00:00:00', '')
于 2013-03-18T15:29:04.577 回答