programing

Simple DateTime SQL 쿼리

fastcode 2023. 4. 10. 22:19
반응형

Simple DateTime SQL 쿼리

특정 범위 내의 Date Time 데이터베이스 필드를 조회하려면 어떻게 해야 합니까?

SQL SERVER 2005를 사용하고 있다

아래의 에러 코드

SELECT * 
  FROM TABLENAME 
 WHERE DateTime >= 12/04/2011 12:00:00 AM 
   AND DateTime <= 25/05/2011 3:53:04 AM

특정 시간 범위 내의 행을 가져와야 합니다.예를 들어, 10분간의 시간 범위입니다.

현재 SQL은 '12' 근처에 잘못된 구문을 사용하여 반환됩니다."

작은 따옴표 부호가 누락되었습니다.

SELECT * 
FROM TABLENAME 
WHERE DateTime >= '12/04/2011 12:00:00 AM' AND DateTime <= '25/05/2011 3:53:04 AM'

또한 ISO8601 형식은 서버의 로컬 문화에 의존하지 않으므로 YYY-MM-DDTh:mm:ss.nnn[ Z ] 형식을 사용하는 것이 좋습니다.

SELECT *
FROM TABLENAME 
WHERE 
    DateTime >= '2011-04-12T00:00:00.000' AND 
    DateTime <= '2011-05-25T03:53:04.000'

날짜로 전달하려는 문자열 주위에 따옴표가 필요합니다. 여기서 BETWEEN을 사용할 수도 있습니다.

 SELECT *
   FROM TABLENAME
  WHERE DateTime BETWEEN '04/12/2011 12:00:00 AM' AND '05/25/2011 3:53:04 AM'

형식을 지정할 때 문자열을 날짜로 명시적으로 변환하는 예에 대해서는 다음 질문에 대한 답변을 참조하십시오.

SQL Server 문자열에서 최신 변환

SQL Server 2005와 2008에서 모두 효과가 있었습니다.

SELECT * from TABLE
WHERE FIELDNAME > {ts '2013-02-01 15:00:00.001'}
  AND FIELDNAME < {ts '2013-08-05 00:00:00.000'}

아래 코드를 실행할 수 있습니다.

SELECT Time FROM [TableName] where DATEPART(YYYY,[Time])='2018' and DATEPART(MM,[Time])='06' and DATEPART(DD,[Time])='14
SELECT * 
  FROM TABLENAME 
 WHERE [DateTime] >= '2011-04-12 12:00:00 AM'
   AND [DateTime] <= '2011-05-25 3:35:04 AM'

그래도 안 될 경우 표를 작성해서 여기에 올려주세요.그러면 정답을 빠르게 얻을 수 있습니다.

select getdate()

O/P
----
2011-05-25 17:29:44.763

select convert(varchar(30),getdate(),131) >= '12/04/2011 12:00:00 AM'

O/P
---
22/06/1432  5:29:44:763PM

SQL Server의 날짜 리터럴은 작은 따옴표로 둘러싸야 한다고 이미 말한 바 있지만, 월/일 혼재 문제는 두 가지 방법으로 해결할 수 있습니다(즉, 25가 월/일 5로 표시되는 문제).

  1. 명시적 사용Convert(datetime, 'datevalue', style)여기서 style은 숫자 스타일 코드 중 하나입니다. 자세한 내용은 캐스팅변환을 참조하십시오.style 파라미터는 날짜를 문자열로 변환하는 것뿐만 아니라 문자열이 날짜로 구문 분석되는 방법을 결정하기 위한 것입니다.

  2. 문자열로 저장된 날짜에는 지역 독립적인 형식을 사용합니다.사용하는 것은 'yyymmdd hh:mm:ss' 또는 ISO 형식을 고려합니다.yyyy-mm-ddThh:mi:ss.mmm실험 결과 언어 불변 형식의 문자열은 없습니다(마지막에 시간대를 포함할 수 있다고 생각합니다만, 위의 링크를 참조해 주세요).

날짜/시간 유형을 가지고 있고 날짜만 확인하고 싶다면, 캐스팅을 사용하여 두 날짜 중 하나를 선택합니다.

예...

... 여기서 cast(날짜로 Datetime) > = cast(날짜로 Datetime) AND cast(날짜로 Datetime) <= cast(날짜로 Datetime)>

언급URL : https://stackoverflow.com/questions/6119369/simple-datetime-sql-query

반응형