gpt4 book ai didi

java - 如何按创建日期搜索数据库中的配置文件

转载 作者:行者123 更新时间:2023-11-29 16:24:47 25 4
gpt4 key购买 nike

我的配置文件在数据库中有创建日期列 (DATETIME)。我需要在 Java 中按日期实现搜索配置文件,这将返回在特定日期或月份创建的所有配置文件。

实现这一点的最佳方法是什么?我考虑过添加新列(日、月、年)并按它们进行搜索,但我不知道这是否是正确的方法。搜索不应该很慢,并且日期需要本地化。

编辑:

是的,这个查询(来自另一个问题)有效:

SELECT * FROM profile WHERE DATE(creation_date) = '20190121';

我在这里看到的一个问题是,在存在大量配置文件的情况下,此查询可能会很慢,因为必须首先执行日期函数,然后对所有创建日期进行比较。在我看来,这样的解决方案效率很低。我不确定添加更多列(整数的日、月和年)是否是更好的解决方案,或者可能使用索引。

最佳答案

I thought about adding new columns (day, month, year) and searching by them, but I don't know if this is the right way. Search shouldn't be slow and dates need to be localized.

如果您使用在数据库中插入配置文件后触发的Datetime 列,则您拥有所需的一切。您可能只需要一列时区来了解创建的配置文件的时区。

你可以这样做:

// I have no idea how your column or table are named so here is an example
SELECT * FROM profile WHERE created_at = '?'

? 您的用户正在查找的日期。

现在对于本地化部分,这里是文档:https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html#function_convert-tz

SELECT * FROM profile WHERE CONVERT_TZ(created_at, 'GMT', profile_timezone) = '?'

其中,'GMT' 是您的服务器时区(替换为真实时区),profile_timezone 是配置文件的时区。

这样,当用户搜索个人资料时,您将根据用户时区创建个人资料的日期时间返回个人资料。

这是你要找的吗?

关于java - 如何按创建日期搜索数据库中的配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54287683/

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