计算本周特定日期的行数 sqlite
Posted
技术标签:
【中文标题】计算本周特定日期的行数 sqlite【英文标题】:Count rows of a particular day this week sqlite 【发布时间】:2021-05-12 15:34:30 【问题描述】:我想创建一个查询,返回本周特定日期的行数。例如,如果 dayNumber = 1
,它应该返回 BookSaveTime 为星期一的图书数。如果dayNumber = 2
,它应该返回星期二的计数,等等。
var week = DateTime.Today.AddDays(-(((int)DateTime.Today.DayOfWeek+6)%7));
return database.ExecuteScalar<int>("SELECT count(*) FROM Book WHERE BookSaveTime > ?;", week);
目前,此查询返回自一周开始以来的书籍数量 - 但我不知道如何修改它以返回给定指定日期的计数 - 例如,星期一或星期二。
public MyAppSQLiteDatabase()
try
database = DependencyService.Get<ISQLiteService>().GetConnection(DbFileName);
database.CreateTable<Book>();
CurrentState = "Database created";
catch (SQLiteException ex)
CurrentState = ex.Message;
public int GetDailyCount(int dayNumber)
var day = DateTime.Today.AddDays(-(((int)DateTime.Today.DayOfWeek+6)%dayNumber));
return database.ExecuteScalar<int>("SELECT count(*) FROM Book WHERE BookSaveTime = ?;", day );
书籍类:
public class Book: INotifyPropertyChanged
[PrimaryKey, AutoIncrement]
public int ID get; set;
private DateTime bookSaveTime;
public DateTime BookSaveTime
get
return bookSaveTime;
set
if (bookSaveTime != value)
bookSaveTime= value;
OnPropertyChanged("BookSaveTime");
【问题讨论】:
对于初学者,您应该使用等于而不是大于。bookEntryTime
列的数据类型是什么?
如果您可以显示一些除了表格之外的内容,尤其是在bookEntryTime
列中的内容,以避免任何猜测。
请检查我的代码,让我知道它是否正确地满足了您的目的。最良好的祝愿 。 :-)
【参考方案1】:
要查找特定的工作日信息,您的查询应如下所示 =>
SELECT * FROM
(SELECT *, cast (strftime('%w', BookSaveTime) as integer) AS WeekDay
FROM BOOK) T1
WHERE T1.WeekDay=1; --Weekday=1 is MONDAY
要查找特定日期的计数,请使用下面的查询
SELECT WeekDay,COUNT(*) AS WeekDayCount FROM
(SELECT *,strftime('%w',BookSaveTime) AS WeekDay
FROM BOOK) T1
GROUP BY T1.WeekDay
注意:您可以在 T1 中添加 WHERE BookSaveTime BETWEEN '2010-01-01' AND '2010-01-31'
以选择特定日期范围内的数据。 DB-Fiddle中的演示代码。
【讨论】:
谢谢@Linker。如何将其转换为 SQLite.NET ORM 查询?我的尝试没有返回任何行:return database.ExecuteScalar<int>("SELECT * FROM (SELECT *, cast(strftime('%w', BookSaveTime) as integer) AS WeekDay FROM BOOK) T1 WHERE T1.WeekDay = 1;");
我认为database.ExecuteScalar<int>
将只返回一列的数据,因此代码可能无法达到您要求的目的。要获取输入表,您可以在链接中查看 think sample => SAMPLE SQLite C#以上是关于计算本周特定日期的行数 sqlite的主要内容,如果未能解决你的问题,请参考以下文章