How to parse string into date?

后端 未结 6 1844
闹比i
闹比i 2020-12-04 16:37

How can I convert a String to a Date in T-SQL?

My test case is the string: \'24.04.2012\'

相关标签:
6条回答
  • 2020-12-04 16:51

    You can use:

    SELECT CONVERT(datetime, '24.04.2012', 103) AS Date
    

    Reference: CAST and CONVERT (Transact-SQL)

    0 讨论(0)
  • 2020-12-04 16:57
    CONVERT(datetime, '24.04.2012', 104)
    

    Should do the trick. See here for more info: CAST and CONVERT (Transact-SQL)

    0 讨论(0)
  • 2020-12-04 17:04

    Microsoft SQL Date Formats

    CONVERT(DateTime, DateField, 104)
    
    0 讨论(0)
  • 2020-12-04 17:05

    Assuming that the database is MS SQL Server 2012 or greater, here's a solution that works. The basic statement contains the in-line try-parse:

    SELECT TRY_PARSE('02/04/2016 10:52:00' AS datetime USING 'en-US') AS Result;
    

    Here's what we implemented in the production version:

    UPDATE dbo.StagingInputReview
     SET ReviewedOn = 
         ISNULL(TRY_PARSE(RTrim(LTrim(ReviewedOnText)) AS datetime USING 'en-US'), getdate()),
     ModifiedOn = (getdate()), ModifiedBy = (suser_sname())
     -- Check for empty/null/'NULL' text
     WHERE not ReviewedOnText is null 
       AND RTrim(LTrim(ReviewedOnText))<>''
       AND Replace(RTrim(LTrim(ReviewedOnText)),'''','') <> 'NULL';
    

    The ModifiedOn and ModifiedBy columns are just for internal database tracking purposes.

    See also these Microsoft MSDN references:

    • CAST and CONVERT (Transact-SQL)
    • PARSE (Transact-SQL)
    0 讨论(0)
  • 2020-12-04 17:09

    Although the CONVERT thing works, you actually shouldn't use it. You should ask yourself why you are parsing string values in SQL-Server. If this is a one-time job where you are manually fixing some data you won't get that data another time, this is ok, but if any application is using this, you should change something. Best way would be to use the "date" data type. If this is user input, this is even worse. Then you should first do some checking in the client. If you really want to pass string values where SQL-Server expects a date, you can always use ISO format ('YYYYMMDD') and it should convert automatically.

    0 讨论(0)
  • 2020-12-04 17:14
    CONVERT(DateTime, ExpireDate, 121) AS ExpireDate
    

    will do what is needed, result:

    2012-04-24 00:00:00.000
    
    0 讨论(0)
提交回复
热议问题