PostgreSQL使用逻辑运算符按切片数据输出SQL

xiozqbni  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(136)

我需要从PostgreSQL上传数据从发票,'billing_address'和'billing_city',它必须在2009年9月1日至2009年9月30日(2009年9月)在'invoice_date'.
结果中必须只有“billing_address”和“billing_city”两列。不能在模拟器中使用BETWEEN,请理解。这是一个模拟器练习,通过了解逻辑运算符对数据进行切片,并使用CAST转换日期。
所以我写了一个代码:

SELECT billing_address,
    billing_city,
    CAST(invoice_date AS date)        
FROM invoice
WHERE NOT billing_country = 'USA'
    AND NOT billing_country = 'Brazil'
    AND total > 2
    AND invoice_date >= '2009.09.01'
    AND invoice_date <= '2009.09.30'

它返回给我:
账单地址账单城市发票日期温尼伯奥斯本街696号2009年9月16日
模拟器提示我结果必须是2列(“billing_address”和“billing_city”)。如何从输出中隐藏"invoice_date“列,或者在需要时更正我的代码。
请指教谢谢。

g2ieeal7

g2ieeal71#

试试这个
将日期中的.更改为-并添加::timestamp

SELECT billing_address,
    billing_city,
    CAST(invoice_date AS date)        
FROM invoice
WHERE NOT billing_country = 'USA'
    AND NOT billing_country = 'Brazil'
    AND total > 2
    AND invoice_date >= '2009-09-01 00:00:00'::timestamp 
    AND invoice_date < '2009-09-30 00:00:00'::timestamp
k4emjkb1

k4emjkb12#

SELECT billing_address,
    billing_city
FROM invoice
WHERE total > 2
    AND (NOT billing_country = 'USA'
    AND NOT billing_country = 'Brazil')
    AND (CAST(invoice_date AS date) >= '2009.09.01'
    AND invoice_date <= '2009.09.30');

相关问题