문제

고객 주문 ID를 저장하는 테이블이 있다고 가정 해 봅시다. 와 같은

| 고객 ID | 주문 ID | 주문 날짜

오늘 주문한 모든 고객을 어떻게 얻을 수 있습니까?

또한 OrderDate는 DateTime입니다.

같은 것

SELECT DISTINCT CustomerID
FROM TableName
Where OrderDate > Today

그러나 마지막 부분은 내가 알아낼 수없는 것입니다.

도움이 되었습니까?

해결책

DateTime에서 날짜 만 원하는 것은 상당히 일반적입니다. RDBMS의 세부 사항은 Google에 문의 할 수 있어야합니다 (언급하지 않기 때문에). 중요한 비트는 쿼리를 만드는 것입니다 사기 가능 변환으로 오늘 데이트1 - 주문 날짜가 아닙니다.

MSSQL의 경우,

SELECT DISTINCT CustomerID
FROM TableName
--I assume you want midnight orders as well - so use >=
Where OrderDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))

오늘 날짜를 섭취하여 작동 할 것입니다. 날짜는 0입니다.DATEDIFF(dd, 0, GETDATE())) 그리고 데이트 0에 다시 추가 (0) (DATEADD(dd, 0, x)). 그래도 T-SQL에 따라 다릅니다.

1 임의의 날짜를 검색하는 경우에도 여전히 두 가지 인수를 전환 할 것입니다.

SELECT DISTINCT CustomerID
FROM TableName
Where 
    OrderDate >= DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
    --You *do not* want midnight of the next day, as it would duplicate orders
    AND OrderDate < DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()) + 1)

다른 팁

Oracle에서 진술은 다음과 같은 것처럼 보일 것입니다.

SELECT DISTINCT CustomerID  
FROM TableName  
Where OrderDate >= trunc(sysdate)

SQL-Server는 비슷해야합니다

SELECT DISTINCT CustomerID
FROM TableName
Where OrderDate = CAST(GetDate() AS NUMERIC)

또는

SELECT DISTINCT CustomerID
FROM TableName
Where CAST(OrderDate AS NUMERIC) = CAST(GetDate() AS NUMERIC)

주어진 날짜에 대해 다른 시간에 같은 숫자를 반환한다는 것을 알려고 노력했습니다. 따라서 날짜가 숫자 값으로 변환 된 경우 작동해야합니다.

SELECT CAST(0 AS DATETIME) 1900 년 1 월 1 일 오전 12시 00시 반환

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top