복붙노트

[SQL] MS 액세스 쿼리에서 날짜를 문자열로 변환

SQL

MS 액세스 쿼리에서 날짜를 문자열로 변환

나는 날짜 열을 기반으로 내 액세스 테이블에서 데이터를 검색하는 것을 시도하고있다. 내 요구 사항은 특정 값보다 디스플레이 모든 것을 이상으로한다. 나는 날짜 데이터 형식으로 포맷 &에서는 CDate 함수를 사용하여 문자열 내 가치를 캐스팅하려고 그것은 오버플로 밖으로 던졌습니다.

다음 쿼리는 다음과 같습니다

Select * from Events
Where Events.[Date] > cDate(Format("20130423014854","yyyy-MM-dd hh:mm:ss"))

샘플 날짜 테이블에서 레코드 값 : 2013년 4월 23일 13 : 48 : 54.0

액세스 이벤트. [날짜]는이 날짜 / 시간 유형 필드

나는이 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.날짜 데이터 형식으로 문자열을 변환 할 DATEVALUE () 함수를 사용합니다. 즉,이 일을하는 가장 쉬운 방법입니다.

    날짜 데이터 형식으로 문자열을 변환 할 DATEVALUE () 함수를 사용합니다. 즉,이 일을하는 가장 쉬운 방법입니다.

    DateValue(String Date) 
    
  2. ==============================

    2.Access에서 클릭 만들기> 모듈 다음 코드를 붙여 넣습니다

    Access에서 클릭 만들기> 모듈 다음 코드를 붙여 넣습니다

    Public Function ConvertMyStringToDateTime(strIn As String) As Date
    ConvertMyStringToDateTime = CDate( _
            Mid(strIn, 1, 4) & "-" & Mid(strIn, 5, 2) & "-" & Mid(strIn, 7, 2) & " " & _
            Mid(strIn, 9, 2) & ":" & Mid(strIn, 11, 2) & ":" & Mid(strIn, 13, 2))
    End Function
    

    Ctrl 키를 + S를 때려 modDateConversion 같이 모듈을 저장합니다.

    이제 쿼리 등을 이용하여 시도

    Select * from Events
    Where Events.[Date] > ConvertMyStringToDateTime("20130423014854")
    

    --- 편집하다 ---

    사용자 정의 VBA 함수를 피하는 대체 용액 :

    SELECT * FROM Events
    WHERE Format(Events.[Date],'yyyyMMddHhNnSs') > '20130423014854'
    
  3. ==============================

    3.

    cdate(Format([Datum im Format DDMMYYYY],'##/##/####') ) 
    

    날짜에 문장 부호없이 변환 문자열

  4. ==============================

    4.기본적으로,이 작동하지 않습니다

    기본적으로,이 작동하지 않습니다

    Format("20130423014854","yyyy-MM-dd hh:mm:ss")
    

    당신의 문자열이 올바른 형식이있는 경우 포맷 기능은 작동합니다

    Format (#17/04/2004#, "yyyy/mm/dd")
    

    그리고 당신은 지정해야합니다, 나는이 값 2013년 4월 23일 13 넣을 수 없기 때문에 [날짜]입니다 필드의 어떤 데이터 유형 : 48 : 일반 날짜 필드에서 54.0 (나는 MS의 access2007를 사용). 이 항목을 참조 할 수 있습니다 : 그 사이에 날짜를 선택

  5. ==============================

    5.당신이 2014년 9월 1일 후 모든 레코드를 표시해야하는 경우, 쿼리에이 추가 :

    당신이 2014년 9월 1일 후 모든 레코드를 표시해야하는 경우, 쿼리에이 추가 :

    SELECT * FROM Events
    WHERE Format(Events.DATE_TIME,'yyyy-MM-dd hh:mm:ss')  >= Format("2014-09-01 00:00:00","yyyy-MM-dd hh:mm:ss")
    
  6. from https://stackoverflow.com/questions/17361338/convert-string-to-date-in-ms-access-query by cc-by-sa and MIT license