Programing

SQL Server에서 특정 날짜보다 큰 모든 날짜를 어떻게 쿼리합니까?

lottogame 2020. 3. 16. 08:13
반응형

SQL Server에서 특정 날짜보다 큰 모든 날짜를 어떻게 쿼리합니까?


노력하고있어:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date 다음과 같습니다 : 2010-03-04 00:00:00.000

그러나 이것은 작동하지 않습니다.

누구나 이유에 대한 참조를 제공 할 수 있습니까?


select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

쿼리에서 2010-4-01수학 표현식으로 취급되므로 본질적으로 읽습니다.

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

( 2010 minus 4 minus 1 is 2005적절한로 변환하고 datetime작은 따옴표를 사용하면이 문제가 해결됩니다.)

기술적으로 파서는

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

그것은 당신을 위해 변환을 할 것이지만, 내 의견으로는 당신 DateTime을 따르는 유지 보수 프로그래머를 위해 명시 적으로 변환하는 것보다 읽기 쉽지 않습니다 .


날짜를 문자열로 묶어보십시오.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';

아래와 같이 사용할 수 있습니다

SELECT * 
FROM dbo.March2010 A
WHERE CAST(A.Date AS Date) >= '2017-03-22';

SELECT * 
    FROM dbo.March2010 A
    WHERE CAST(A.Date AS Datetime) >= '2017-03-22 06:49:53.840';

DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

먼저 TexBox를 Datetime으로 변환 한 다음 해당 변수를 쿼리에 사용하십시오.


요약하면 정답은 .....

날짜> = '20100401'(날짜 형식 yyyymmdd)에서 *를 db에서 선택하십시오.

이것은 다른 언어 시스템에 대한 문제를 피하고 색인을 사용합니다

참고 : https://stackoverflow.com/questions/10643379/how-do-i-query-for-all-dates-greater-than-a-certain-date-in-sql-server

반응형