mysql - 为什么这个 MySQL SELECT 不包含正确的日期?

标签 mysql date datetime select conditional-statements

主要问题是,我存储在数据库 datetime 中,而不是日期(我需要的)。好吧,没关系。

我每天都会存储数千份报告。

我需要将我的 datetime_view 左移 10 个(以缩短时间),一切都很好。除了这个。我想弄清楚为什么我必须加上条件+ future 的某一天?否则它不会搜索到我想要的内容。

SELECT 
    LEFT(datetime_view,10),
    count(type) 
        FROM reports 
            WHERE 
        type IN (1,2,5) 
            AND 
        datetime_view>='2012-10-28' 
            AND
        datetime_view<='2012-11-04' 
            group by LEFT(datetime_view,10);

你可以看到我必须从 future 开始寻找。为什么??

它给了我从 28.10 到 3.11 的输出....

最佳答案

不要对日期/时间值使用字符串操作。 MySQL 有一个huge set of functions用于日期/时间操作。尝试一下

GROUP BY DATE(datetime_view)

相反,它将仅提取日期时间字段的日期部分。您的字符串操作不符合 y10k 标准。使用 date() 函数是。

对于加一天,请考虑如何进行比较:普通日期值在用于日期/时间比较时,具有隐式 00:00:00 code> 附加的时间值,例如所有日期的时间均为“午夜”。

关于mysql - 为什么这个 MySQL SELECT 不包含正确的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13210581/

相关文章:

php - 从表到表的复杂 MySQL 获取关系和条件

scala - 如何使用 Scala 在 Spark 中处理日期?

mysql - 从mysql日期获取月份和年份作为字符串

c# - DataTable 中的# 是什么选择查询

php - MySQL 选择过期订阅的日期时间

c# - 使用定时器刷新界面,不断获取 "There is already an open DataReader associated with this Connection which must be closed first."

java - LocalDateTime.format(DateTimeFormatter) 和 DateTimeFormatter.format(TemporalAccessor) 有什么区别?

ios - 从 Titanium 中的 UTC 时间获取设备时间/本地时间

java - 无法将 ISO 8601 格式的字符串解析为 Java 8 日期,在偏移量中缺少冒号

mysql - 如何在 MySQL 中转义特殊字符?