gpt4 book ai didi

mysql - 在Where 子句中将字符串转换为日期时间 Mysql 和 Impala

转载 作者:行者123 更新时间:2023-11-29 18:13:03 25 4
gpt4 key购买 nike

我有一个 mysql 表,其中日期时间存储为字符串。我想从表中获取具有提供的时间范围的行。

我的 table 看起来像:

datetime                   plugin_name
2017-11-12T00:44:48.530000 testng
2017-11-12T00:44:48.529000 testng
2017-11-12T00:46:22.668000 testng
2017-11-12T00:46:22.666000 testng
2017-11-12T01:00:16.338000 ntf-test

此处列 datetime 的类型为 String。我已尝试使用此查询

select `datetime`, plugin_name  
from plugin_names
where datetime(`datetime`) > '2017-06-29T06:16:49.426000'
and DATETIME(`datetime`) < '2017-06-29T06:16:49.314000'

但我收到错误:

Encountered: DATETIME
Expected: CASE, CAST, DEFAULT, EXISTS, FALSE, IF, INTERVAL, NOT, NULL, REPLACE, TRUNCATE, TRUE, IDENTIFIER

我尝试了以下操作:MySQL compare DATE string with string from DATETIME field

我正在使用Impala作为分布式Mysql数据库有人知道如何解决这个问题吗?

最佳答案

对于 MySQL

您下面的示例适用于日期,而不是完整的时间戳。对于这些字符串,您将需要 str_to_date 并且需要记住 '%Y-%m-%dT%H:%i:%s.%f' 因为每个当您对该表运行查询时,您将需要它。更好的解决方案是使用 REAL 日期时间列。 sqlfiddle demo

select
`datetime`
, str_to_date(`datetime`,'%Y-%m-%dT%H:%i:%s.%f')
, plugin_name
from plugin_names
where str_to_date(`datetime`,'%Y-%m-%dT%H:%i:%s.%f') > '2017-10-29T06:16:49.426000'
and str_to_date(`datetime`,'%Y-%m-%dT%H:%i:%s.%f') < '2017-12-29T06:16:49.314000'

只需等待,直到某些人在该列中输入无效日期......例如

'2O17-02-30T00:44:48.53000'

它并不是你想象的那样

关于mysql - 在Where 子句中将字符串转换为日期时间 Mysql 和 Impala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47244801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com