Chris Slinko Ответов: 2

Sql change datetime to date mm/dd/yyyy


У меня есть эта таблица, которую я пытаюсь преобразовать Datetime просто в дату mm/dd/yyyy. Каждая строка имеет уникальную дату. Это код, который я использовал ниже.

Использование налогоплательщиком
ОТ VISION_SALEHIST4
Где TRY_CONVERT(VARCHAR(15), TRY_CONVERT(datetime, SALEDATE), 101) равно NULL
И SALEDATE НЕ ЯВЛЯЕТСЯ НУЛЕВЫМ

Что я уже пробовал:

Все виды вариаций от вышеуказанной даты.

2 Ответов

Рейтинг:
0

Sandeep Mewara

DECLARE @dt DATETIME = '2019-12-31 14:43:35.863';
SELECT 
    CAST(CONVERT(VARCHAR(10),@dt,1) AS DATE) s1,
    CAST(CONVERT(VARCHAR(10),@dt,101) AS DATE) s2;

--OUTPUT
--s1         s2
---------- ----------
--12/31/19   12/31/2019

--(1 row affected)


Ссылка:
Функция SQL Server CONVERT() [^]
Приведение и преобразование (Transact-SQL) - SQL Server | Microsoft Docs[^]
Преобразование даты и времени в дату в SQL Server на практических примерах[^]

Для тебя:
USE 
    taxpayer
SELECT 
    *
FROM 
    VISION_SALEHIST4
WHERE 
    CAST(CONVERT(VARCHAR(10), SALEDATE, 101) AS DATE) IS NULL --BTW - why convert and check for null? 
    AND 
    SALEDATE IS NOT NULL


Однако я запутался в вашем вопросе. Вы проверяете SALEDATE не null, но преобразованная строка эквивалентна be. Это правда?


Chris Slinko

Я не уверен, что вы подразумеваете под "проверкой SALEDATE not null, но преобразованная строка эквивалентна be". Я новичок в sql без формального обучения. Я копировал кодировку, которая, как мне казалось, могла бы сработать. Я действительно попробовал запрос 2 и получил сообщение об ошибке "Msg 156, Level 15, State 1, Line 3Incorrect syntax рядом с ключевым словом" FROM". когда я нажал на него, он ссылался на строку"FROM VISION_SALEHIST4".

Sandeep Mewara

SELECT отсутствовал: SELECT * FROM VISION_SALEHIST4

Кстати, приведенный выше запрос является примером. Очевидно, есть предположения, о которых вы должны знать. Например, что, если SALEDATE может быть пустым? Это так, вам нужно справиться с этим.

Кроме того, речь идет не о том, чтобы быть новым или копировать/вставлять - вам нужно определить результат запроса на основе вашей потребности/требования, а затем написать его.


Выше ответ & детали - они являются иллюстрацией и попыткой помочь вам понять, как вы можете использовать функции CONVERT & CAST SQL, которые выглядели так, как был запрос.

Рейтинг:
0

OriginalGriff

Ты не можешь этого сделать.

Значения DATETIME хранятся в виде числа тиков, начиная с предопределенного момента времени: целого числа. Они вообще не имеют формата, если только не отформатированы в строку для возврата в ваше презентационное программное обеспечение (и даже тогда это неправильный подход).
Подумайте об этом: база данных SQL хранит информацию из любой точки мира и возвращает ее для отображения в любую другую точку мира. Если бы "формат" был связан с ним, когда он был сохранен, он был бы применен, когда он был извлечен, и новое местоположение могло бы быть в другой день, не говоря уже о часовом поясе! Таким образом, значение может быть сохранено сейчас в Стране Оз, восстановлено через 1 секунду в США и уже технически будет в будущем!

Вот почему рекомендуется преобразовать значения из локального часового пояса в UTC в вашем программном обеспечении для презентаций и сохранить их, а затем преобразовать обратно в местное время, когда вы снова получите их в своем программном обеспечении для презентаций. Программное обеспечение для презентаций-это единственное приложение, которое знает, в каком часовом поясе находится пользователь (или настроен его компьютер).