SQL:查询列(字符串)作为日期
假设我在数据库中有几个列:SQL:查询列(字符串)作为日期,sql,sqlite,Sql,Sqlite,假设我在数据库中有几个列:id,date\u added,tag `20134` | `February 07, 2019` | `New` `40323` | `February 09, 2019` | `New` 我想根据添加的日期运行带有筛选器的查询: SELECT * FROM table WHERE date_added > 'February 08, 2019' 我该怎么做?我看到您可以将字符串转换为日期对象,但不确定在WHERE过滤器中是否可以 感谢您的帮助 编辑:我正在
id
,date\u added
,tag
`20134` | `February 07, 2019` | `New`
`40323` | `February 09, 2019` | `New`
我想根据添加的日期运行带有筛选器的查询:
SELECT * FROM table
WHERE date_added > 'February 08, 2019'
我该怎么做?我看到您可以将字符串转换为日期对象,但不确定在WHERE
过滤器中是否可以
感谢您的帮助
编辑:我正在使用SQLite听着,我不知道您使用的是什么数据库引擎,但如果是Sql server,您可以执行以下操作: 在下面的查询中,如果date\u added列是date类型,则不必强制转换该列,如果它是string类型,还可以强制转换它
cast(date\u Addas date)
注意:如果要将日期作为字符串类型处理,则必须使用有效的格式,这一点非常重要。在Sql Server中,日期默认保存在yyyy-MM-dd
-2019-02-10
中
如果要将日期转换为另一种格式,可以使用外观,我不知道您使用的是什么数据库引擎,但如果是Sql server,则可以执行以下操作: 在下面的查询中,如果date\u added列是date类型,则不必强制转换该列,如果它是string类型,还可以强制转换它
cast(date\u Addas date)
注意:如果要将日期作为字符串类型处理,则必须使用有效的格式,这一点非常重要。在Sql Server中,日期默认保存在yyyy-MM-dd
-2019-02-10
中
如果要将日期转换为另一种格式,可以使用您为添加的日期列选择的格式,该格式是不可比较的
SQLite对日期没有那么灵活,日期实际上是
Text
因此,在这种情况下,您需要逐个提取日期部分,并创建一个可比较的日期:
select *
from tablename
where
substr(date_added, instr(date_added, ',') + 2) ||
case substr(date_added, 1, instr(date_added, ' ') - 1)
when 'January' then '01'
when 'February' then '02'
when 'March' then '03'
when 'April' then '04'
when 'May' then '05'
when 'June' then '06'
when 'July' then '07'
when 'August' then '08'
when 'September' then '09'
when 'October' then '10'
when 'November' then '11'
when 'December' then '12'
end ||
substr(date_added, instr(date_added, ' ') + 1, 2) > '20190208'
请参见您为添加的日期列选择的格式,该格式不可比较
SQLite对日期没有那么灵活,日期实际上是
Text
因此,在这种情况下,您需要逐个提取日期部分,并创建一个可比较的日期:
select *
from tablename
where
substr(date_added, instr(date_added, ',') + 2) ||
case substr(date_added, 1, instr(date_added, ' ') - 1)
when 'January' then '01'
when 'February' then '02'
when 'March' then '03'
when 'April' then '04'
when 'May' then '05'
when 'June' then '06'
when 'July' then '07'
when 'August' then '08'
when 'September' then '09'
when 'October' then '10'
when 'November' then '11'
when 'December' then '12'
end ||
substr(date_added, instr(date_added, ' ') + 1, 2) > '20190208'
请参见WHERE子句中的是,您可以轻松做到这一点,操作方式取决于您使用的数据库。请用正确的DBMSY标记您的问题,您可以在WHERE子句中轻松地完成此操作,how取决于您使用的数据库。请用正确的DBMSok标记您的问题,我可以回去更改日期。有什么方法可以让我看到什么是兼容的吗?您必须选择的格式是
YYYY-MM-DD
。这是可直接比较的。好吧,假设这是格式,如何将列中的字符串转换为可以比较的日期?这就是让我困惑的部分你不需要转换,你可以做:WHERE date_added>“2019-02-08”哦,我明白了。如果日期是这种格式,SQL可以将其理解为“日期”,而不是字符串?好的,我可以返回并更改日期。有什么方法可以让我看到什么是兼容的吗?您必须选择的格式是YYYY-MM-DD
。这是可直接比较的。好吧,假设这是格式,如何将列中的字符串转换为可以比较的日期?这就是让我困惑的部分你不需要转换,你可以做:WHERE date_added>“2019-02-08”哦,我明白了。如果日期是这种格式,SQL可以将其理解为“日期”,而不是字符串?