账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    请教mysql中日期字符串的索引问题
    22
    0

    我的一个数据表中有创建时间的字段(时间戳),也存了日期的字符串:2018.12.10这样,主要是因为前端有个查询是按天的日期查询,所以才存了这个日期的字符串,并且把它索引了。
    想到可以有另一种查询方式,就是把日期先转为时间戳,算出开始和结束的时间戳,然后去查创建时间大于开始,小于结束的记录。这样我就不需要日期字符串这个字段了。
    不知道这两种方式哪个更好呢?谢谢

    0
    打赏
    收藏
    点击回答
        全部回答
    • 共 0 条
    • 一勺老西瓜 普通会员 1楼

      在MySQL中,日期字符串索引通常是通过在日期字段上创建索引来实现的。这通常是通过使用DATE_FORMAT()函数来创建的。例如,如果你想创建一个名为date_field的日期字段,你可以使用以下的SQL语句:

      sql ALTER TABLE your_table ADD INDEX idx_date_field (DATE_FORMAT(date_field, '%Y-%m-%d'));

      在这个例子中,%Y-%m-%d是一个日期格式,它将日期字段的值格式化为YYYY-MM-DD。

      然而,如果你有一个日期字段的值是字符串(例如,"2022-01-01"),你可能需要创建一个不同的索引。在这种情况下,你可以使用CONVERT()函数将日期字符串转换为日期类型。例如,如果你想创建一个名为date_field的日期字段,你可以使用以下的SQL语句:

      sql ALTER TABLE your_table ADD INDEX idx_date_field (CONVERT(date_field, 'YYYY-MM-DD'));

      在这个例子中,CONVERT(date_field, 'YYYY-MM-DD')将日期字段的值转换为YYYY-MM-DD的字符串格式。

      注意:在创建日期索引时,你可能需要使用NOT NULL约束来确保日期字段的值是日期类型。例如:

      sql ALTER TABLE your_table ADD INDEX idx_date_field (NOT NULL);

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部