2014-06-10 2 views
0

누구든지 내가 사이를 반대로 할 수 있는지 알고 있습니까? 이 같은Sql 쿼리 날짜 범위가 반대로

뭔가 :

SELECT * 
FROM TABLE 
WHERE '01-01-2014' BETWEEN 'field1' AND 'field2'; 
+1

예. 너 해봤 니? –

답변

1

당신이 "하지 사이의"의미 "사이에 역"을 수행 할 수 있습니다 : 당신은 날짜 상수에 대한 YYYY-MM-DD (ISO 표준)를 사용한다

where '2014-01-01' not between field1 and field2 

. 또는 특정 변환 함수를 사용하여 문자열에서 날짜로 명시 적으로 변환 할 수 있습니다.

+0

Thx, 작품이야 – Microseu

0
SELECT * FROM TABLE WHERE 
TO_DATE('01-01-2014', 'DD-MM-YYYY') 
     BETWEEN 
     TRUNC(field1) AND TRUNC(field2); 

쿼리 위는 필드 1을 가정하고 FIELD2는 "DATE"데이터 유형에 속한다. 오라클에서

, &&가 유효하지 않습니다, 대신 AND를 사용

넣다 FIELD1 및 FIELD2 문자열 다음, 당신의 선택 쿼리는

SELECT * FROM TABLE WHERE 
TO_DATE('01-01-2014', 'DD-MM-YYYY') 
     BETWEEN 
     TO_DATE(field1,'DD-MM-YYYY') AND TO_DATE(field2,'DD-MM-YYYY'); 

편집해야합니다. 날짜 비교 문자열의 경우 유효 할 "YYYY-MM-DD"를 사용하고 있습니다. 그러나함수를 사용하는 것이 더 좋습니다. 왜냐하면 data_expiracio가 "DATE"데이터 유형이라고 가정하기 때문입니다. 에 의한 경우

SELECT grups.nom as grup, categoria.nom as categoria, zona.nombre as zona, ofertes.* FROM (((ofertes LEFT JOIN grups ON ofertes.id_grupo = grups.id) LEFT JOIN categoria ON ofertes.idcategoria = categoria.id) LEFT JOIN zona ON ofertes.idzona = zona.id) WHERE 
estat=1 
AND 
data_expiracio >= TO_DATE('2014-06-10' , 'YYYY-MM-DD') 

AND TO_DATE(2014-06-04,'YYYY-MM-DD') BETWEEN 
TRUNC(dataoferta) AND TRUNC(datavenciment) ORDER BY datavenciment ASC 
+0

grups.nom을 카테고리로 분류하고, 카테고리 또는 카테고리와 같이 선택하십시오. * FROM ((LEFT JOIN ON INERTERT.ID_Grupo = grups.id에서 작성) LEFT JOIN category onertes.idcategoria = categoria. id) LEFT JOIN zona on ofertes.idzona = zona.id) 어디에서 estat = 1 && data_expiracio> = '2014-06-10'&& TO_DATE (2014-06-04, 'YYYY-MM-DD') TRUNC (dataoferta) AND TRUNC (datavenciment) ORDER BY 데이터 향상 ASC No는 아무 것도 반환하지 않으며 해당 날짜의 작업을 추가하지 않고 기록을 유지합니다. – Microseu

+0

내 편집에서 참조하십시오 –

+0

도움을 주셔서 감사합니다 necesitava 그냥 "전에"사이에 "사이에" – Microseu