Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得Sqlite中特定月份出生的所有玩家_Sql_Sqlite - Fatal编程技术网

获得Sqlite中特定月份出生的所有玩家

获得Sqlite中特定月份出生的所有玩家,sql,sqlite,Sql,Sqlite,我有一个包含以下属性的players表 _id INTEGER PRIMARY KEY, name text not null,birth_date date not null 我想要一个查询,可以给我一个特定月份出生的球员名单,比如1986年5月 如何做到这一点?我尝试使用SQLite中提供的日期和时间函数,但它们没有用 任何指点都将不胜感激 谢谢选择p.name、p.birth\u date 来自玩家p 其中p.出生日期>1986-04-30 出生日期1986-04-30 出生日期='19

我有一个包含以下属性的players表

_id INTEGER PRIMARY KEY, name text not null,birth_date date not null
我想要一个查询,可以给我一个特定月份出生的球员名单,比如1986年5月

如何做到这一点?我尝试使用SQLite中提供的日期和时间函数,但它们没有用

任何指点都将不胜感激

谢谢

选择p.name、p.birth\u date
来自玩家p
其中p.出生日期>1986-04-30
出生日期<'1986-06-01';
(未测试)

选择p.name、p.birth\u日期
来自玩家p
其中p.出生日期>1986-04-30
出生日期<'1986-06-01';
(未经测试)

我认为这应该行得通。我没有试过:

SELECT _id, name, birth_date 
FROM players 
WHERE strftime('%m',birth_date) = '05' AND  strftime('%Y',birth_date) = '1986'
我认为这应该行得通。我没有试过:

SELECT _id, name, birth_date 
FROM players 
WHERE strftime('%m',birth_date) = '05' AND  strftime('%Y',birth_date) = '1986'
选择p.name
,p.出生日期
来自玩家p
其中p.出生日期>='1986-05-01'
出生日期<日期('1986-05-01','+1个月')
;
选择p.name
,p.出生日期
来自玩家p
其中p.出生日期>='1986-05-01'
出生日期<日期('1986-05-01','+1个月')
;

Matt Ball的版本可以使用索引;您的版本必须为每行计算strftime()两次。这是观察,不是批评。与我打交道的大多数人在处理这样的问题时都会考虑几个月或几年。然后他们把工作交给我来调整。是的,我更喜欢这种方法。我曾经有过这样一个“哦,为什么我没有想到那件事”的时刻。出于好奇,这行得通吗:
。。。其中strftime(“%Y%m”,出生日期)=“1986 05”
?是的,我想应该是这样。我现在不能测试它,但我不明白为什么不能。使用原始实现可能更好。如果你只是寻找月份,而不关心年份,这可能会更好;您的版本必须为每行计算strftime()两次。这是观察,不是批评。与我打交道的大多数人在处理这样的问题时都会考虑几个月或几年。然后他们把工作交给我来调整。是的,我更喜欢这种方法。我曾经有过这样一个“哦,为什么我没有想到那件事”的时刻。出于好奇,这行得通吗:
。。。其中strftime(“%Y%m”,出生日期)=“1986 05”
?是的,我想应该是这样。我现在不能测试它,但我不明白为什么不能。使用原始实现可能更好。只有在你只寻找月份而不关心年份的情况下,这可能会更好。第二个条件也可能是:
和p.birth\u date<'1986-06-01'
。处理日期时也是一样,但如果你有日期时间就更好了。这是我的原始条件,但当@Catcall编辑我的答案以正确引用日期时,他们也更改了边缘条件。是的,我更改了Matt Ball的边缘条件。他最初写的是1986-04-30和1986-05-01。我现在明白了,他的意思可能是“1986-06-01”。以后我会尝试使用更轻的触感。:)@Catcall:你说得对——我只是没有键入我的意思。感谢修复:)第二个条件也可以是:
和p.birth\u date<'1986-06-01'
。处理日期时也是一样,但如果你有日期时间就更好了。这是我的原始条件,但当@Catcall编辑我的答案以正确引用日期时,他们也更改了边缘条件。是的,我更改了Matt Ball的边缘条件。他最初写的是1986-04-30和1986-05-01。我现在明白了,他的意思可能是“1986-06-01”。以后我会尝试使用更轻的触感。:)@Catcall:你说得对——我只是没有键入我的意思。感谢修复:)
SELECT p.name
     , p.birth_date
FROM Player p
WHERE p.birth_date >= '1986-05-01'
  AND p.birth_date < date('1986-05-01','+1 month') 
;