T- SQL выбирает различные форматированные даты и времени, все еще сортируя как неформатированные даты и времени - PullRequest
0 голосов
/ 09 января 2020

У меня есть только разрешения SELECT на сервере, на котором я работаю. Я пытаюсь написать запрос, в котором один из столбцов имеет формат даты и времени:

--mydb.EventDate is column EventDate(datetime, not null)

SELECT DISTINCT
    FORMAT(mydb.EventDate, 'M/d/yyyy h:mm:ss tt') as 'EventDate',
    [Other Specified Columns]
FROM
    mytsqldb.myschema.mytable AS mydb
ORDER BY 
    EventDate, [Other Specific Columns]

Мне также нужно отсортировать по дате события в хронологическом порядке. Однако с этим форматом он сортируется по алфавиту (я думаю). Из-за SELECT DISTINCT я не могу конвертировать EventDate, когда я ORDER BY. Однако я не хочу, чтобы к выводу запроса добавлялись дополнительные столбцы. Форматирование даты и времени очень важно, но я могу отказаться от этого призрака, если это необходимо. Возможно ли то, что я ищу?

1 Ответ

0 голосов
/ 09 января 2020

Вместо DISTINCT используйте GROUP BY:

SELECT 
  FORMAT(mydb.EventDate, 'M/d/yyyy h:mm:ss tt') as 'EventDate',
  [Other Specified Columns]
FROM mytsqldb.myschema.mytable as mydb
GROUP BY mydb.EventDate, FORMAT(mydb.EventDate, 'M/d/yyyy h:mm:ss tt'), [Other Specified Columns]
ORDER BY mydb.EventDate, [Other Specific Columns]

или с подзапросом:

SELECT FORMAT(t.EventDate, 'M/d/yyyy h:mm:ss tt') AS EventDate, [Other Specified Columns]
FROM (
  SELECT DISTINCT
    mydb.EventDate,
    [Other Specified Columns]
  FROM mytsqldb.myschema.mytable as mydb 
) AS t
ORDER BY t.evDate, [Other Specific Columns]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...