Sql 从当前月份获取记录

Sql 从当前月份获取记录,sql,oracle,Sql,Oracle,我试图使用以下查询从购物车表中提取总价。目前,它将获取过去30天的总价。但是我需要修改查询以获取当月的总价。 即,购买日期应在当月的1到30/31之间 SELECT TOTAL_PRICE FROM CUST_CART_TABLE WHERE USER_ID = '"+userId+"' AND (PURCHASED_DATE BETWEEN TO_DATE(SYSDATE-30, 'DD-MM-YY') AND TO_DATE(SYSDATE,'DD-MM-YY') 请尝试: SE

我试图使用以下查询从购物车表中提取
总价。目前,它将获取过去30天的
总价
。但是我需要修改查询以获取当月的
总价。
即,
购买日期应在当月的1到30/31之间

SELECT TOTAL_PRICE
FROM CUST_CART_TABLE
WHERE USER_ID      = '"+userId+"'
AND (PURCHASED_DATE BETWEEN TO_DATE(SYSDATE-30, 'DD-MM-YY') AND TO_DATE(SYSDATE,'DD-MM-YY')
请尝试:

SELECT TOTAL_PRICE
FROM CUST_CART_TABLE
WHERE USER_ID='"+userId+"' AND 
TRUNC(PURCHASED_DATE) BETWEEN LAST_DAY(ADD_MONTHS(SYSDATE,-1))+1 AND 
                        LAST_DAY(SYSDATE)

您可以使用TRUNC和LAST_DAY:

SELECT TOTAL_PRICE
FROM CUST_CART_TABLE
WHERE USER_ID      = '"+userId+"'
AND (TRUNC(PURCHASED_DATE) BETWEEN TRUNC(SYSDATE, 'MM') AND TRUNC(LAST_DAY(SYSDATE)));

你可以试试这个-

SELECT TOTAL_PRICE
    FROM CUST_CART_TABLE
    WHERE USER_ID      = '"+userId+"'
AND TRUNC(PURCHASED_DATE,'MONTH') = TRUNC(SYSDATE,'MONTH');

它将返回当前月份的记录。

只需比较月份,即“mm”与“yyyy”组合:

SELECT TOTAL_PRICE
FROM CUST_CART_TABLE
WHERE USER_ID      = '"+userId+"'
AND (PURCHASED_DATE BETWEEN TO_DATE(SYSDATE-30, 'DD-MM-YY') AND TO_DATE(SYSDATE,'DD-MM-YY')
SELECT TOTAL_PRICE
FROM CUST_CART_TABLE
WHERE USER_ID = '"+userId+"'
AND TO_CHAR(PURCHASED_DATE,'yyyymm') = TO_CHAR(SYSDATE,'yyyymm');

这将丢失属于一个月最后一天的记录。@Ramblin'Man如果
PURCHASE\u DATE
被截断,则不会这样做-我认为是这样的。无论如何,谢谢,我已经将
TRUNC
添加到
PURCHASE\u DATE