sql - SQL Interval 有问题

标签 sql postgresql where-clause

我需要从一年前的特定日期获取数据总和。但是我对间隔有困难

Select 0 - sum(l.icdetailquantity )
    from inventoryline l 
    where l.icmasterid = 'WAD185967E' and l.icdetailtranstype = 5 
        and l.icdetaildate <= '01-Jan-2019' and l.icdetaildate >  Now() - interval '1 year'

这按预期工作,但我需要传递一个不使用 Now() 的日期

Select 0 - sum(l.icdetailquantity )
    from inventoryline l 
    where l.icmasterid = 'WAD185967E' and l.icdetailtranstype = 5 
        and l.icdetaildate <= '01-Jan-2019' and l.icdetaildate >  '01-Jan-2019' - interval '1 year'

第二个SQl报错

ERROR:  invalid input syntax for type interval: "01-Jan-2019"
LINE 4: ...detaildate <= '01-Jan-2019' and l.icdetaildate >  '01-Jan-20...

最佳答案

您正在尝试从字符串中减去年份。这不起作用,您必须首先使用以下方法将 youru 字符串转换为日期对象:

to_date(date_string,format)  

适合您的示例:

to_date('01-Jan-2019', 'DD-Mon-YYYY') - interval '1 year'

http://www.postgresqltutorial.com/postgresql-to_date/

关于sql - SQL Interval 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56688855/

相关文章:

java - hibernate UUID 作为 UUID 类型

mysql - WHERE 子句后跟 JOIN

sql - AWS Redshift 可以删除包含在事务中的表吗?

sql - 仅在一台服务器上更改作为主键一方的字段时出错

python - 带有嵌入式命令的 os.system

sql - 非技术人员的人性化 PostgreSQL 界面?

php - MySQL WHERE 结果基于先前的 WHERE 子句

mysql - 在mysql中使用别名where条件来计算

sql - 从 SQL 查询中获取表名

sql - 报价是按物质顺序排列的吗?