MySQL 从转换为 varchar 的 datetime 中删除剩余时间。子字符串()?

标签 mysql sql sql-update substr

我做的有点倒退:

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

Ex: 2013-12-12 00:00:00

Output: 2013-12-12

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

我在想类似的东西

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

然而,这最终会删除该列的所有值。

最佳答案

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

SELECT SUBSTR(comp_date,1,10) FROM logic_intern_report_link

看看区别。

(完整披露:SUBSTR() 函数也接受负起始索引)

关于MySQL 从转换为 varchar 的 datetime 中删除剩余时间。子字符串()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15480476/

相关文章:

MySQL 数据库 SQL 与 Excel 数据没有结果

php - 如何将此 SQL 查询转换为 Codeigniter Active Record?

mysql - 正确指定外键约束时,其形成不正确

如果记录不在临时表中,mysql更新表

php - 在 WordPress 中使用 PHP 的 SQL 更新问题

mysql - 将 Mysql View 与 Laravel 模型集成

mysql - Zend Framework - 和 where 子句

php - 仅更新mysql表中的非空值

php - 使用 Neo4j 的新闻源中帖子/更新的时间衰减因子

mysql - SQL 查询 - 仅当值在 "last n records"范围内时获取行(特定于记录)