воскресенье, 17 марта 2013 г.

Как преобразовать данные к типам данных SQL из различных форматов и культур




DECLARE  @D NVARCHAR(50) = '31.12.2012'
SELECT
    PARSE(@D AS DATETIME USING 'ru-ru') AS Date1
    ,DATEADD(DAY,1,
    PARSE(@D AS DATETIME USING 'ru-ru')) AS Date2

DECLARE @I DECIMAL(10,2) = PARSE ('1000,5' AS  DECIMAL(10,2) USING 'ru-ru')
SELECT @I AS Result

GO

DECLARE @I DECIMAL(10,2) = PARSE ('One' AS  DECIMAL(10,2) USING 'ru-ru')
SELECT @I AS Result

GO

DECLARE @STR NVARCHAR(50) = '10000,5'
SET @STR = 'One'
SET @STR = '10000.5'
    IF TRY_PARSE (@STR AS  DECIMAL(10,2) USING 'ru-ru') IS NULL
     SELECT TRY_PARSE (@STR AS  DECIMAL(10,2) USING 'En-Us')
    ELSE
    SELECT PARSE (@STR AS  DECIMAL(10,2) USING 'ru-ru') AS Result


SELECT PARSE('12.31.2012' AS DATETIME USING 'ru-ru')

SELECT TRY_PARSE('31.12.2012' AS DATETIME USING 'ru-ru')
SELECT TRY_PARSE('12.31.2012' AS DATETIME USING 'us-en')