Избегайте даты по умолчанию (январь 1900) в столбце sql server varchar

У меня есть таблица опыта в моей базе данных SQL Server, имеющей следующие столбцы:

exp_id int,
u_id int ,
exp_jobtitle varchar(100),
exp_company varchar(100),
exp_startdate date,
exp_enddate varchar(50),
exp_working varchar(50),
exp_description varchar(2000),

Если я сейчас работаю над этим конкретным заданием, то в столбец exp_enddate ничего не вставляется, а в столбец exp_working в настоящее время работает.

И во внешнем интерфейсе я показываю такой результат:

Если моя работа закончена май 2015 - июнь 2015, и проблема возникает, когда я работаю в настоящее время

Я хочу этот вывод May 2015 - Currently Working И я получаю вывод, как это

May 2015 - Jan 1900Currently Working

С помощью этого запроса:-

select right(convert(varchar(50), cast('exp_enddate' as date), 106), 8)

Как я могу избежать этой даты по умолчанию или есть какой-либо другой способ получить желаемый результат?

May 2015 - Currently Working

2 ответа

Решение

Если вы имеете дело с пустой строкой для конечной даты, то SQL Server автоматически обработает ее как 01.01.1990.

Вы можете увидеть это, запустив следующий запрос:

SELECT CAST( '' AS DATE )

Это возвращает 1900-01-01,

Что вы можете сделать, это проверить, является ли дата окончания пустой, и если это так, обработать ее как работающую в данный момент, например так:

SELECT 
    CASE 
        WHEN exp_enddate = '' 
        THEN 'Currently Working' 
        ELSE RIGHT( CONVERT( VARCHAR(50), CAST( exp_enddate AS DATE ), 106 ), 8 )
    END

Это либо возвратит дату окончания в указанном вами формате, либо "в данный момент работает".

        IF (@LeaseCancelProcessedDate = '')    
    BEGIN    
      SET @LeaseCancelProcessedDate = NULL    
    END

Здесь вы можете использовать этот синтаксис, в этом@LeaseCancelProcessedDateэто мое имя переменной, которое я использую для установки значения для моего столбца типаDateTime. Изначально я тоже столкнулся с той же проблемой, но решил ее с помощью этого небольшого трюка.

Другие вопросы по тегам