【问题标题】:SQLite ORDER BY month number in a 'yyyy-mm-dd' format'yyyy-mm-dd' 格式的 SQLite ORDER BY 月份数
【发布时间】:2011-11-02 05:31:06
【问题描述】:

我有一个表格,其中有一个名为call_date 的列,格式为DATETIME

在本专栏中,我有以下日期,格式为yyyy-mm-dd

我想要的是在列的值字符串中选择按月份编号排序的行。

有这样的 SQLite 函数吗?

我已经尝试过strftime('%m', call_date),但是没有用。

谢谢。

【问题讨论】:

  • 浏览我的答案中提供的链接。你会发现与你的问题有关。谢谢。

标签: android sql sqlite


【解决方案1】:
select * from myTable order by CAST(strftime('%m', call_date) AS INTEGER);

【讨论】:

  • 你能帮帮我这对我不起作用我的代码如下:"SELECT * FROM USER_DATA where strftime('%m', created_date) ='04'"; “created_date”-> 字段名称。在数据库中,我的日期格式是“MM-dd-yyyy”
【解决方案2】:

您可以使用strftime 获取月份编号,然后按该编号排序:

select ...
from your_table
order by strftime('%m', call_date)

【讨论】:

  • 它只是不按月号排序。 =/
  • @rogcg:你可以在 ORDER BY 中放多个东西,order by strftime('%m', call_date), something_else desc, another_thing
  • 我想按月号订购。因此,检索到的月份将井然有序。有没有办法在格式为 yyyy-mm-dd 的字符串中做到这一点??
  • @rogcg:您可以使用strftime SQLite SQL 函数从您的call_date 中提取月份编号。如果你的call_date'2011-11-01`` then strftime('%m', call_date)` 将是11
【解决方案3】:

一般来说,由于可能的性能损失,我会尽量避免通过计算表达式对结果集进行排序。我会使用另一种方法:例如,我会将 MONTH 列添加到表中并定义一个 TRIGGER ,它将设置新的列值。然后在查询中,您可以按新列排序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-02
    • 1970-01-01
    • 2013-08-31
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多