gpt4 book ai didi

mysql - 获取 SELECT 语句以使用 STR_TO_DATE

转载 作者:行者123 更新时间:2023-11-30 22:56:37 26 4
gpt4 key购买 nike

我将日期作为字符串存储在一个表中(列名是“log_event”)——是的,我知道它应该是一个真实的日期类型——但我正在使用一个我没有创建的现有表,等等.

无论如何,日期在列中的形式是

'08/14/2014 1:01 am'(或下午)

我真的只是想根据字符串的日期部分获取一个 SELECT(我不关心我的 SELECT 目的的时间,我只需要日期介于 say date1 之间的所有行和 date2),我试过了:

SELECT * FROM db_event_log WHERE STR_TO_DATE(log_event,'%m/%d/%Y') > STR_TO_DATE('08/01/2014', '%m/%d/%Y')

但是我的 SELECT 返回 NULL

(是的,我知道这不会在两个日期之间进行 SELECT - 我只是想逐步构建一个查询字符串,看看我做对了,然后再尝试进入下一个级别)

我也尝试通过以下方式格式化时间:

SELECT * FROM db_event_log WHERE STR_TO_DATE(log_event,'%m/%d/%Y %l:%i %p') > STR_TO_DATE('08/01/2014 12:00 am', '% m/%d/%Y %l:%i %p')

它也返回 NULL 选择。

我哪里错了?

最佳答案

试试这个:

 DATE(STR_TO_DATE(log_event,  '%m/%d/%Y %l:%i %p'))

STR_TO_DATE() 在无法理解其整个输入字符串时返回 NULL,因此我建议您解释整个字符串,然后使用 DATE() 来获取日期部分。

您也可以在不从每个文本时间戳中获取日期部分的情况下进行日期范围选择。例如,这将获取昨天的条目

 WHERE STR_TO_DATE(log_event,  '%m/%d/%Y %l:%i %p') >= DATE(NOW()) - INTERVAL 1 DAY
AND STR_TO_DATE(log_event, '%m/%d/%Y %l:%i %p') < DATE(NOW())

顺便说一句,当您清理数据时,坚持返回 NULL 会很有帮助。在进行故障排除时,您可以发出这样的命令来查找没有意义的日期字符串。

 SELECT whatever FROM table WHERE STR_TO_DATE(log_event,  '%m/%d/%Y %l:%i %p') IS NULL

你会看到你的“坏”数据。

关于mysql - 获取 SELECT 语句以使用 STR_TO_DATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103862/

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