programing

SQL Server의 DateTime 필드가 Excel에서 잘못 표시됨

golfzon 2023. 4. 19. 23:45
반응형

SQL Server의 DateTime 필드가 Excel에서 잘못 표시됨

하루에도 수없이 SQL Server Management Studio에서 Excel로 레코드를 복사하고 붙여넣습니다.

는...DateTime「」의 8/23/2013 4:51:02 PM기능 상자에 올바르게 표시되지만 아래 그림과 같이 올바르게 표시되지 않습니다.

여기에 이미지 설명 입력

을 「」로 한다.ShortDate는 표시 문제를 수정하지만 포맷해야 할 날짜 필드가 많기 때문에 처리하기가 귀찮습니다.Excel SQL Server microsoft는 Microsoft 、 Excel 、 Excel 。

: : 엑셀.Management Studio 결과를 메모장에 복사한 후 Excel로 복사했는데 여전히 동일한 문제가 발생합니다. ★★2013-08-23 16:52:11.493로 [메모 excel excel Excel ]라고 됩니다.52:11.5(예: 「 」, 「 」, 「 」).엑셀 2010년

이 문제를 단순화할 수 있는 방법이 있습니까?

또한 조작을 위해 SQL Management Studio에서 Excel로 DATETIME 필드를 복사하여 붙여넣기만 하면 되는 문제가 있었습니다.Excel의 DATETIME 값은 올바르지만(붙여넣기 후 포맷이 적용되는 경우에도), 기본적으로 SQL DATETIME을 표시하는 기본 형식이 없습니다. 다음은 수정 사항입니다.

셀을 우클릭하여 [Format Cells]를 선택합니다.[ Custom ]를 선택합니다.[ Type : input ]필드에 다음과 같이 입력합니다.

yyyy-mm-dd hh:mm:ss.000

참고 자료: http://office.microsoft.com/en-us/excel-help/create-a-custom-number-format-HP010342372.aspx

나도 안드레와 같은 문제가 있었어직접적인 해결책은 없는 것 같습니다만, SMALDATETIME의 제한 범위 내에서 데이터를 생성하는 쿼리의 CAST는 문제를 해결합니다.다음 쿼리에서 첫 번째 열은 Excel로 올바르게 포맷되지 않습니다.

GETDATE()와 CAST(GETDATE()를 SMALDATETIME으로 선택합니다.

아마도 DATETIME과 DATETIME2의 초단위가 Excel을 혼동할 수 있습니다.

이것은 매우 오래된 게시물입니다만, 저는 최근에 이 문제에 부딪혔고, 다음과 같이 SQL을 포맷하여 문제를 해결했습니다.

SELECT CONVERT(varchar, getdate(), 120) AS Date

SQL Server에서 결과를 복사하여 Excel에 붙여넣으면 Excel이 올바른 형식을 유지합니다.

포맷을 가 없는 .yyyy-mm-dd hh:mm:ss.000

  • 셀에는 '다보다'라고 '라고 쓰세요.=NOW() 유효 (예: 유효 날짜+시간)5/30/2017 17:35: 사용자 언어로 올바르게 표시됩니다.5/30/2017 5:35:00 PM
  • 셀을 선택하고 Format Panker 아이콘(페인트 브러시)을 클릭합니다.
  • 이제 형식을 적용할 열의 행 머리글을 클릭합니다.

그러면 올바른 날짜/시간 형식이 열 전체에 복사되어 올바르게 표시됩니다.

질문에 대한 완전한 답변은 아니지만 Excel에는 선택한 셀의 형식을 날짜 또는 시간으로 변경할 수 있는 바로 가기 키가 있습니다(유감스럽게도 날짜+시간에는 찾을 수 없습니다).

따라서 날짜만 찾는 경우 다음을 수행할 수 있습니다.

  1. SQL Server Management Studio 복사 범위
  2. Excel에 붙여넣기
  3. 날짜로 포맷할 셀 범위를 선택합니다.
  4. 를 누릅니다.Ctrl+Shift+3

Times에는 Times를 합니다.Ctrl+Shift+2.

SQL SERVER에서 사용할 수 있습니다.

표에서 SELECT CONVERT(nvarchar(19), ColumnName,121) AS [Changed On]를 선택합니다.

나는 이 질문에 대답하기엔 너무 늦었다는 것을 안다.하지만 같은 문제가 생겼을 때 어떻게 해결했는지 공유하면 좋을 것 같아서요.내가 한 일은 이렇다.

  • 데이터를 복사하기 전에 Excel에서 열을 선택하고 '포맷 셀'을 선택한 후 '텍스트'를 선택하고 '확인'을 클릭합니다(따라서 SQL 데이터의 세 번째 열이 DateTime이면 이 형식을 Excel의 세 번째 열에 적용합니다).
  • 이제 데이터를 SQL에서 Excel로 복사하여 붙여넣으면 datetime 값이 올바른 형식으로 지정됩니다.순서 2

다음의 조작을 실시합니다.Excel 에 「2004-06-01 00:00:00.000」을 붙여 넣습니다.

이제 "2004-06-01 00:00:00"를 Excel에 붙여넣어 보십시오.

Excel은 붙여넣을 때 밀리초를 처리할 수 없는 것 같습니다...

여기 도움이 될 만한 해킹이 있어요시간 값 앞에 아포스트로피를 두기 때문에 SSMS에서 출력을 마우스 오른쪽 버튼으로 클릭하고 "Copy with Headers"라고 말한 다음 Excel에 붙여넣으면 datetime2 값의 밀리초/나노초가 유지됩니다.아포스트로피를 거기에 넣는 것은 조금 추하지만, 시간 가치로 원치 않는 반올림을 하는 Excel에 대처하는 것보다 낫다.날짜는 영국 형식이지만 MSDN에서 CONVERT 함수 페이지를 볼 수 있습니다.

CONVERT(VARCHAR(23)), sm을 선택합니다.마일스톤 날짜, 103) AS 마일스톤 날짜, '''+CONVERT(VARCHAR(23), sm.마일스톤 날짜, 114) AS 마일스톤SomeTable sm으로부터의 시간

여기 SSMS에서 데이터를 붙여넣은 후 실행할 수 있는 간단한 매크로가 있습니다. 퍼스널에 복사하는 것이 가장 쉽습니다.XLSB 파일을 작성하여 빠른 액세스 도구 모음 또는 리본의 새로운 커스텀 그룹/탭에 버튼을 추가합니다.데이터가 선택된 상태에서 붙여넣기 직후 매크로를 실행합니다.데이터 내에서 단일 셀을 선택한 경우에도 실행할 수 있습니다. 실행 전에 현재 영역을 자동으로 선택합니다(ctrl+a와 동일).데이터의 서브셋에서만 매크로를 실행하려면 실행하기 전에 원하는 서브셋을 선택합니다.헤더를 포함하거나 제외할 수 있지만 현재 영역에 최소 2개의 행이 있다고 가정합니다.

NULL이 아닌 첫 번째 값이 이상한 형식의 날짜/시간 값인지 확인하기 위해 각 열을 효율적으로 테스트합니다.이 경우 날짜 형식이 'd/m/y'인 경우에도 열 전체가 기본 시스템 날짜/시간 형식으로 설정됩니다.

    Sub FixSSMSDateFormats()

    'Intended for copied data from SSMS and handles headers included
    'For selection or current area, checks each column...
    '   If the first non-NULL value is in strange time format, then change entire column to system date/time format

    Dim values As Variant, r As Long, c As Long
    
    If Selection.Count = 1 Then Selection.CurrentRegion.Select
    
    values = Selection.Value
    
    For c = 1 To UBound(values, 2)
    
        For r = 2 To UBound(values, 1)
        
            If TypeName(values(r, c)) = "Double" Then
                If values(r, c) > 1 And Selection(r, c).NumberFormat = "mm:ss.0" Then
                    Selection.Columns(c).NumberFormat = "m/d/yyyy h:mm"
                End If
                Exit For
            ElseIf values(r, c) <> "NULL" Then
                Exit For
            End If
        
        Next
    
    Next

    End Sub

SQL Server에서 상당수의 애드혹 보고서를 생성하여 Excel에 복사/붙여넣는 동안 이와 같은 문제가 있었습니다.적절한 해결책도 좋지만, 일시적인 회피책은 Excel에서 강조 표시된 셀을 Excel의 datetime 형식으로 변환하는 기본 매크로를 생성하여 단축키(내 경우 Shift-Ctrl-D)에 할당하는 것이었습니다.Excel을 열고 SSMS에서 새 Excel 워크시트로 복사/붙여넣고 변환할 열을 강조 표시한 후 Shift-Ctrl-D를 누릅니다.일이 끝났다.

SSMS에서 엑셀로 데이터를 복사할 때도 같은 문제에 직면했습니다.날짜 형식이 엉망이 되었다. 마침내 나는 내 노트북의 시스템 날짜 형식을 yyy/mm/dd에서 yyy-mm-dd로 변경했다.모든 게 잘 풀려요

언급URL : https://stackoverflow.com/questions/18598075/datetime-fields-from-sql-server-display-incorrectly-in-excel

반응형