복붙노트

[SQL] 에서 VARCHAR 날짜 시간으로 변환하는 방법

SQL

에서 VARCHAR 날짜 시간으로 변환하는 방법

나는 (시간 부분없이) YYYY-MM-DD 형식의 VARCHAR 변수에 날짜 시간 변수에 값을 변환 할 필요가 어디는 SQL Server 2005에서 쿼리 작업입니다. 어떻게 그렇게 할 수 있습니까?

해결법

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

    1.마이크로 소프트 SQL 서버로 :

    마이크로 소프트 SQL 서버로 :

    --
    -- Create test case
    --
    DECLARE @myDateTime DATETIME
    SET @myDateTime = '2008-05-03'
    
    --
    -- Convert string
    --
    SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
    
  2. ==============================

    2.여기에 모든 스타일에 대한 몇 가지 테스트 SQL입니다.

    여기에 모든 스타일에 대한 몇 가지 테스트 SQL입니다.

    DECLARE @now datetime
    SET @now = GETDATE()
    select convert(nvarchar(MAX), @now, 0) as output, 0 as style 
    union select convert(nvarchar(MAX), @now, 1), 1
    union select convert(nvarchar(MAX), @now, 2), 2
    union select convert(nvarchar(MAX), @now, 3), 3
    union select convert(nvarchar(MAX), @now, 4), 4
    union select convert(nvarchar(MAX), @now, 5), 5
    union select convert(nvarchar(MAX), @now, 6), 6
    union select convert(nvarchar(MAX), @now, 7), 7
    union select convert(nvarchar(MAX), @now, 8), 8
    union select convert(nvarchar(MAX), @now, 9), 9
    union select convert(nvarchar(MAX), @now, 10), 10
    union select convert(nvarchar(MAX), @now, 11), 11
    union select convert(nvarchar(MAX), @now, 12), 12
    union select convert(nvarchar(MAX), @now, 13), 13
    union select convert(nvarchar(MAX), @now, 14), 14
    --15 to 19 not valid
    union select convert(nvarchar(MAX), @now, 20), 20
    union select convert(nvarchar(MAX), @now, 21), 21
    union select convert(nvarchar(MAX), @now, 22), 22
    union select convert(nvarchar(MAX), @now, 23), 23
    union select convert(nvarchar(MAX), @now, 24), 24
    union select convert(nvarchar(MAX), @now, 25), 25
    --26 to 99 not valid
    union select convert(nvarchar(MAX), @now, 100), 100
    union select convert(nvarchar(MAX), @now, 101), 101
    union select convert(nvarchar(MAX), @now, 102), 102
    union select convert(nvarchar(MAX), @now, 103), 103
    union select convert(nvarchar(MAX), @now, 104), 104
    union select convert(nvarchar(MAX), @now, 105), 105
    union select convert(nvarchar(MAX), @now, 106), 106
    union select convert(nvarchar(MAX), @now, 107), 107
    union select convert(nvarchar(MAX), @now, 108), 108
    union select convert(nvarchar(MAX), @now, 109), 109
    union select convert(nvarchar(MAX), @now, 110), 110
    union select convert(nvarchar(MAX), @now, 111), 111
    union select convert(nvarchar(MAX), @now, 112), 112
    union select convert(nvarchar(MAX), @now, 113), 113
    union select convert(nvarchar(MAX), @now, 114), 114
    union select convert(nvarchar(MAX), @now, 120), 120
    union select convert(nvarchar(MAX), @now, 121), 121
    --122 to 125 not valid
    union select convert(nvarchar(MAX), @now, 126), 126
    union select convert(nvarchar(MAX), @now, 127), 127
    --128, 129 not valid
    union select convert(nvarchar(MAX), @now, 130), 130
    union select convert(nvarchar(MAX), @now, 131), 131
    --132 not valid
    order BY style
    

    다음은 결과입니다

    output                   style
    Apr 28 2014  9:31AM          0
    04/28/14                     1
    14.04.28                     2
    28/04/14                     3
    28.04.14                     4
    28-04-14                     5
    28 Apr 14                    6
    Apr 28, 14                   7
    09:31:28                     8
    Apr 28 2014  9:31:28:580AM   9
    04-28-14                     10
    14/04/28                     11
    140428                       12
    28 Apr 2014 09:31:28:580     13
    09:31:28:580                 14
    2014-04-28 09:31:28          20
    2014-04-28 09:31:28.580      21
    04/28/14  9:31:28 AM         22
    2014-04-28                   23
    09:31:28                     24
    2014-04-28 09:31:28.580      25
    Apr 28 2014  9:31AM          100
    04/28/2014                   101
    2014.04.28                   102
    28/04/2014                   103
    28.04.2014                   104
    28-04-2014                   105
    28 Apr 2014                  106
    Apr 28, 2014                 107
    09:31:28                     108
    Apr 28 2014  9:31:28:580AM   109
    04-28-2014                   110
    2014/04/28                   111
    20140428                     112
    28 Apr 2014 09:31:28:580     113
    09:31:28:580                 114
    2014-04-28 09:31:28          120
    2014-04-28 09:31:28.580      121
    2014-04-28T09:31:28.580      126
    2014-04-28T09:31:28.580      127
    28 جمادى الثانية 1435  9:31:28:580AM    130
    28/06/1435  9:31:28:580AM    131
    

    만들기 NVARCHAR (최대) 짧은 시간을 자릅니다. 예를 들면 :

    select convert(nvarchar(11), GETDATE(), 0)
    union select convert(nvarchar(max), GETDATE(), 0)
    

    출력 :

    May 18 2018
    May 18 2018  9:57AM
    
  3. ==============================

    3.다음을 시도해보십시오

    다음을 시도해보십시오

    CONVERT(varchar(10), [MyDateTimecolumn], 20)
    

    전체 날짜 시간뿐 아니라 날짜를 수행합니다

    CONVERT(varchar(23), [MyDateTimecolumn], 121)
    

    변환 스타일이 페이지를 참조하십시오 :

    http://msdn.microsoft.com/en-us/library/ms187928.aspx 또는 SQL 서버 CONVERT () 함수

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

    4.SQL 서버 2012의 새로운 기능, 형식이 있습니다 : http://msdn.microsoft.com/en-us/library/ee634924.aspx

    SQL 서버 2012의 새로운 기능, 형식이 있습니다 : http://msdn.microsoft.com/en-us/library/ee634924.aspx

    및 사용자 정의 날짜 시간 형식 문자열을 사용할 수 있습니다 http://msdn.microsoft.com/en-us/library/ee634398.aspx

    이 페이지는 또한 SQL2008R2 볼 수 있습니다 의미하지만, 그런 경우 내가 테스트 한 편리하지 않습니다.

    사용 예제 (호주 날짜) :

    FORMAT(VALUE,'dd/MM/yyyy h:mm:ss tt')
    
  5. ==============================

    5.당신은 DATEPART (DATEPART, VARIABLE)를 사용할 수 있습니다. 예를 들면 :

    당신은 DATEPART (DATEPART, VARIABLE)를 사용할 수 있습니다. 예를 들면 :

    DECLARE @DAY INT 
    DECLARE @MONTH INT
    DECLARE @YEAR INT
    DECLARE @DATE DATETIME
    @DATE = GETDATE()
    SELECT @DAY = DATEPART(DAY,@DATE)
    SELECT @MONTH = DATEPART(MONTH,@DATE)
    SELECT @YEAR = DATEPART(YEAR,@DATE)
    
  6. ==============================

    6.캐스트 또는 변환 중 하나 :

    캐스트 또는 변환 중 하나 :

    CAST 구문 :

    CAST ( expression AS data_type [ (length ) ])
    

    CONVERT 구문 :

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
    

    http://msdn.microsoft.com/en-us/library/ms187928.aspx

    실제로 특정 형식을 요구하기 때문에 :

    REPLACE(CONVERT(varchar(10), Date, 102), '.', '-')
    
  7. ==============================

    7.-이 당신에게 형식으로 0과 시간을 제공 'YYYY-MM-DD 00 : 00 : 00.000'

    -이 당신에게 형식으로 0과 시간을 제공 'YYYY-MM-DD 00 : 00 : 00.000'

    
    SELECT CAST( CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ; 
    
  8. ==============================

    8.마이크로 소프트 SQL 서버로 :

    마이크로 소프트 SQL 서버로 :

    CONVERT에 대한 구문을 사용합니다 :

    CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
    

    예:

    SELECT CONVERT(varchar,d.dateValue,1-9)
    

    - 캐스트 및 변환 (Transact-SQL)를 참조하십시오 MSDN : 스타일을 위해 당신은 여기에 더 많은 정보를 찾을 수 있습니다.

  9. ==============================

    9.시험:

    시험:

    select replace(convert(varchar, getdate(), 111),'/','-');
    

    더 많은 MS SQL 팁에

  10. ==============================

    10.다음을 시도해보십시오

    다음을 시도해보십시오

    CONVERT(VARCHAR(10),GetDate(),102)
    

    그럼 당신은 교체해야 할 것입니다 "." 와 "-".

    여기에 도움이되는 사이트입니다 http://www.mssqltips.com/tip.asp?tip=1145

  11. ==============================

    11.

    declare @dt datetime
    
    set @dt = getdate()
    
    select convert(char(10),@dt,120) 
    

    특정 문자열 형식을 원하는 나는 문자 (10)의 데이터 길이를 해결했습니다.

  12. ==============================

    12.영업 이익은 날짜 형식을 언급했다. 나를 위해, 시간 부분은 방법으로 가져옵니다. 나는 포맷하기 전에 (지금까지 날짜를 캐스트) 시간 부분을 제거하는 비트 청소기 생각합니다.

    영업 이익은 날짜 형식을 언급했다. 나를 위해, 시간 부분은 방법으로 가져옵니다. 나는 포맷하기 전에 (지금까지 날짜를 캐스트) 시간 부분을 제거하는 비트 청소기 생각합니다.

    convert( varchar(10), convert( date, @yourDate ) , 111 )
    
  13. ==============================

    13.이것은 내가 그것을 할 방법은 다음과 같습니다 CONVERT를 (NVARCHAR (10), DATE1, 103))

    이것은 내가 그것을 할 방법은 다음과 같습니다 CONVERT를 (NVARCHAR (10), DATE1, 103))

  14. ==============================

    14.당신은 여러 형식으로 날짜를 변환 할 수 있으며, syntaxe 사용하기 간단하다 :

    당신은 여러 형식으로 날짜를 변환 할 수 있으며, syntaxe 사용하기 간단하다 :

    CONVERT('TheTypeYouWant', 'TheDateToConvert', 'TheCodeForFormating' * )
    CONVERT(NVARCHAR(10), DATE_OF_DAY, 103) => 15/09/2016
    

    귀하의 경우에, 난 그냥 같이 변환 NVARCHAR (10)에 의해 크기를 제한했습니다 :

    CONVERT(NVARCHAR(10), MY_DATE_TIME, 120) => 2016-09-15
    

    http://www.w3schools.com/sql/func_convert.asp : 더 많은 참조

    (날짜는 날짜 시간 인 경우) 또 다른 해결책은 간단 CAST입니다 :

    CAST(MY_DATE_TIME as DATE) => 2016-09-15
    
  15. ==============================

    15.이 SQL을 사용해보십시오 :

    이 SQL을 사용해보십시오 :

    select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),'/','_') + '_'+ 
           REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),':','_')
    
  16. ==============================

    16.SQL Server의 경우 2008+ 당신은 함께 변환 포맷을 사용할 수 있습니다.

    SQL Server의 경우 2008+ 당신은 함께 변환 포맷을 사용할 수 있습니다.

    예를 들어, 유럽 스타일 (예를 들어, 독일) 타임 스탬프 :

    CONVERT(VARCHAR, FORMAT(GETDATE(), 'dd.MM.yyyy HH:mm:ss', 'de-DE'))
    
  17. ==============================

    17.당신은 어떤 데이터베이스 말하지만, 여기에 MySQL과 연동 (자동으로 수행해야하며, VARCHAR 타입 변환) 타임 스탬프에서 날짜를 얻을 수있는 가장 쉬운 방법입니다하지 않았다 :

    당신은 어떤 데이터베이스 말하지만, 여기에 MySQL과 연동 (자동으로 수행해야하며, VARCHAR 타입 변환) 타임 스탬프에서 날짜를 얻을 수있는 가장 쉬운 방법입니다하지 않았다 :

    mysql> select date(now());
    +-------------+
    | date(now()) |
    +-------------+
    | 2008-09-16  | 
    +-------------+
    1 row in set (0.00 sec)
    
  18. ==============================

    18.짧고 간단한 방법은 다음과 같습니다

    짧고 간단한 방법은 다음과 같습니다

    DECLARE @now AS DATETIME = GETDATE()
    
    SELECT CONVERT(VARCHAR, @now, 23)
    
  19. ==============================

    19.

    DECLARE @DateTime DATETIME
    SET @DateTime = '2018-11-23 10:03:23'
    SELECT CONVERT(VARCHAR(100),@DateTime,121 )
    
  20. ==============================

    20.

    CONVERT(VARCHAR, GETDATE(), 23)
    
  21. ==============================

    21.함수를 쓰기

    함수를 쓰기

    CREATE FUNCTION dbo.TO_SAP_DATETIME(@input datetime)
    RETURNS VARCHAR(14)
    AS BEGIN
        DECLARE @ret VARCHAR(14)
        SET @ret = COALESCE(SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(26), @input, 25),'-',''),' ',''),':',''),1,14),'00000000000000');
        RETURN @ret
    END
    
  22. ==============================

    22.당신은 기본 날짜 시간 데이터 형식을 가지고 있기 때문에 나는 C #을 /. NET을 가정하고 어떤 언어하지만 말을하지 않습니다. 이 경우 바로 ToString 메서드를 사용하여 변환 서식 지시자 등의 사용 :

    당신은 기본 날짜 시간 데이터 형식을 가지고 있기 때문에 나는 C #을 /. NET을 가정하고 어떤 언어하지만 말을하지 않습니다. 이 경우 바로 ToString 메서드를 사용하여 변환 서식 지시자 등의 사용 :

    DateTime d = DateTime.Today;
    string result = d.ToString("yyyy-MM-dd");
    

    그러나, 나는 데이터베이스 쿼리에서 이것을 사용하거나 SQL 문에 연결된에주의한다. 데이터베이스는 사용하는 특정 포맷 문자열을 필요로한다. 당신은 시간의 부분을 제로화하고 당신이 달성하려고하는 것입니다 경우 SQL 매개 변수로 날짜 시간을 사용하는 것이 더 낫다.

  23. from https://stackoverflow.com/questions/74385/how-to-convert-datetime-to-varchar by cc-by-sa and MIT license