SQL:查询列(串)的日期

问题描述 投票:0回答:2

假设我有一个数据库中的几列:iddate_addedtag

`20134` | `February 07, 2019` | `New`
`40323` | `February 09, 2019` | `New`

我想运行基于date_added过滤器的查询:

SELECT * FROM table
WHERE date_added > 'February 08, 2019'

我会怎么做呢?我看见你可以将字符串转换为Date对象,但不知道这是可能的一个WHERE过滤器内。

任何帮助表示赞赏!

编辑:我使用SQLite

sql sqlite
2个回答
2
投票

你选择了date_added列的格式,这是没有可比性。 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'

demo


0
投票

你看,我不知道是什么数据库引擎,你正在使用,但如果它是一个SQL Server中,你可以做到以下几点:

在下面的查询,没有必要投下DATE_ADDED列,如果它是日式的,如果它是字符串类型的,你也可以将它转换cast (date_add as date)

SELECT * FROM table
WHERE date_added > cast('2019-01-01' as date)

注意:如果他们要处理日期为字符串类型,它们必须有一个有效的格式,在SQL Server的日期默认情况下在yyyy-MM-dd -2019-02-10保存是非常重要的。

如果你想将日期转换为其他格式,你可以使用convert function

© www.soinside.com 2019 - 2024. All rights reserved.