T-SQL: приведение столбца DateTme varchar, которое может содержать «1753-01-01» в пустую строку - PullRequest
1 голос
/ 24 апреля 2019

Задача: преобразовать столбец DateTme (приведенный как varchar), который может содержать 1753-01-01, в пустую строку.

Какой самый эффективный способ сделать это в T-SQL?

Например, если я использую:

SELECT 
    LEFT(CONVERT(VARCHAR, DateCol1, 120), 10) 
FROM
    ourDatabase.dbo.ourTable

Как эффективно изменить любую строку, содержащую '1753-01-01', на пустую строку?

ПРИМЕЧАНИЕ: кажется, что значение '1753-01-01' действительно появляется в таблице базы данных;иногда возвращается, где есть нули.Можно даже устроить свидание и получить 1753, так что оно НЕ является «нулевым» в обычном смысле.

См. Также:
Какое значение 01.01.1753 в SQL Server? для фона на эту конкретную дату.

Также см.: {общее обсуждение преобразования Datetime в varchar}:

Как преобразовать DateTime в VarChar

Это для Microsoft SQL Server 2014 с использованием SSMS 14.0.17

1 Ответ

3 голосов
/ 24 апреля 2019

Использование replace().

SELECT replace(left(convert(varchar, datecol1, 120), 10), '1753-01-01', '')
       FROM ourtable;

дб <> скрипка

...