首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
拉钩
V2EX  ›  Django

请教 django 查询问题

  •  
  •   zhuyw2006 · 61 天前 · 748 次点击
    这是一个创建于 61 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一个字段是<年月日时分秒>,FSTTIME = models.CharField(max_length=14, blank=True, null=True)
    例:20181010112339

    我需要根据开始时间(时分秒),和结束时间(时分秒)。去查询这个字段;
    而且可能会跨越凌晨,比如:从下午 16 点 到 凌晨 5 点 ( 160000 ~ 050000 );
    不知道这样能不能查询呢?谢谢
    13 回复  |  直到 2018-10-11 11:05:31 +08:00
        1
    Leigg   61 天前 via iPhone
    怎么查的到呢?
    应该存时间戳,查的时候条件随便给,都可以转换成时间戳在库里面查。
        2
    zhuyw2006   61 天前
    @Leigg 你好,是把时间信息单独放在 TimeField 字段吗?
        3
    lonelinsky   61 天前
    用 DateTimeField,然后啥问题都解决了,时间切片都可以 https://docs.djangoproject.com/en/2.1/ref/models/fields/#datetimefield
        4
    fatelovely   61 天前
    用字符串类型存储时间信息,这不是把一个简单的问题生生复杂化了吗?

    如果是固定的查询要求,比如「下午 16 点到凌晨 5 点」,可以通过构造正则表达式,还是可以查的。

    如果是动态的查询要求,就算了吧。重新开一个时间戳字段,使用当前的字符串字段初始化一下,是正道。
        5
    zhuyw2006   61 天前
    @lonelinsky
    @fatelovely
    我只需要时分秒,使用 TimeField 字段就可以了吧?
    查询下午 16 点 到 凌晨 5 点的时候是不是 FSTTIME__gte=160000 FSTTIME__lte=050000 ?
        6
    Leigg   61 天前 via iPhone
    不是,就像存一个 int 类型把时间戳存进去就可以了。integerfield
        7
    Leigg   61 天前 via iPhone
    timefield 我想也是能够解决问题的,只是我用的最多的还是时间戳,什么数据库都可以存。
        8
    zhuyw2006   61 天前
    @fatelovely 你好,我现在单独使用字符串字段放时间,当天到凌晨的应该如何查询呢?
    我现在这样 Q(FSTTIME__range=(checkPeriodSTime, “ 235959 ”)) &
    Q(FSTTIME__range=("000000", checkPeriodETime))
    查询不到。
        9
    NaVient   61 天前
    @zhuyw2006 写个脚本就把里边的数据转了,继续用字符串存时间以后你的坑会越来越多的
        10
    PythonAnswer   61 天前 via iPhone
    时间戳。自己换算 hms。这样跨日方便。
    不跨日可以用 datetime 记得可以单独提取年月日时分秒。
        11
    zhuyw2006   61 天前
    @NaVient 我现在已经独立出来了。不过还是不知道怎么查询跨越凌晨的问题,比如:从下午 16 点 到 凌晨 5 点 ( 160000 ~ 050000 );

    @PythonAnswer 应该如何查询呢?谢谢
        12
    lonelinsky   61 天前
    @zhuyw2006
    如果是用 TimeField 的话用 ` Q(FSTTIME__gte=160000) | Q(FSTTIME__lte=050000) ` 应该是可以的呀
        13
    zhuyw2006   61 天前
    @lonelinsky 谢谢,安装您的方法改成 DateTimeField 字段就可以了,不过查询的时候要加 FSTTIME__time__gte,
    因为我只需时间。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3414 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 21ms · UTC 09:57 · PVG 17:57 · LAX 01:57 · JFK 04:57
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1