【问题标题】:How do i select todays birthday date from SQLite database?如何从 SQLite 数据库中选择今天的生日日期?
【发布时间】:2020-05-12 15:45:50
【问题描述】:

我正在尝试从 SQLite 数据库中选择生日日期为今天的所有记录。

我的表架构如下图。

public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table "+TABLE_NAME+" (id integer primary key, name text, isactive integer default 0, bday text);");
}

我试图通过写下面的查询来获取日期。但是没用。

case 2:
    //Toast.makeText(context,"today called",Toast.LENGTH_SHORT).show();
      String query="select * from "+TABLE_NAME+" where bday =strftime('%m',date('now','localtime')) and bday=strftime('%Y',date('now','localtime'))";
      cursor=database.rawQuery(query,null);
break;

我已解析用户输入日期以 'yyyy-MM-dd' 格式存储到数据库中。帮助我从所有记录中获取今天的生日日期。

【问题讨论】:

  • bday 永远不能像您的查询一样同时等于两个不同的值...
  • 而且没有理由使用date()... 只需strftime('format string', 'now', 'localtime') 就足够了。
  • 好的。我需要作为格式字符串传递什么?是否有效 strftime('%m-%d','now','localtime')?

标签: android database sqlite select


【解决方案1】:

如果您想获取今天生日的所有行,您应该只对感兴趣,而 > 年份
如果bday 列的格式是YYYY-MM-DD,那么您只需要MM-DD 部分即可:

substr(bday, 6)

您还需要今天日期的MM-DD 部分,您可以使用它:

strftime('%m-%d',date('now', 'localtime'))

所以你的 WHERE 子句应该是:

where substr(bday, 6) = strftime('%m-%d',date('now', 'localtime'))

【讨论】:

  • 感谢您提供准确的解决方案。
【解决方案2】:

由于您使用特定模式('yyyy-MM-dd')来保存出生日期,因此很容易按出生日期找到用户。让我分几个步骤来描述。

  1. 以编程方式收集当前日期并将其子串化,只取当前日期的月份和日期。

    String pattern = "yyyy-MM-dd";
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);
    
    String date = simpleDateFormat.format(new Date()); //2020-01-27
    String birthdaySubString= date.substring(5, 10); //01-27
    
  2. 使用birthDaySubString 调用您的数据库处理程序方法。

        getUserbyBirthDay(birthdaySubString);
    
  3. 从处理程序方法中,使用“like”运算符查询您的数据库,并使用此birthDaySubString 进行搜索。

    public List<user> getUserbyBirthDay(String birthdaySubString){ //select * from user where bday like "%08-17";
    String query="select * from "+TABLE_NAME+" where bday like "+birthdaySubString+"'"; cursor=database.rawQuery(query,null);
    }

它应该工作。在 sqliteBrowser 中进行了测试。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 2012-10-27
    相关资源
    最近更新 更多