Разделение поля Datetime на лету в T-SQL

Это вопрос, который я написал, и подумал, что это то, что я хотел. Я думаю, глядя на это, вы можете увидеть, что я пытаюсь сделать:

INSERT INTO tbTime
SELECT DISTINCT
    DATEPART(yyyy, ed),
    DATEPART(mm, ed),
    DATEPART(dd, ed),
    EntireDate AS ed
FROM test

Я в основном копирую поле даты из другой таблицы, но хочу разбить его на поля года, месяца и дня на лету. Вышеупомянутый запрос не будет работать, хотя:

Invalid column name 'ed'.

Я использую SQL Server 2008, спасибо!

1 ответ

Решение

Вы не можете создать псевдоним поля, а затем использовать этот псевдоним в других частях инструкции SELECT.

Пытаться:

INSERT INTO tbTime
SELECT DISTINCT
    DATEPART(yyyy, EntireDate),
    DATEPART(mm, EntireDate),
    DATEPART(dd, EntireDate),
    EntireDate AS ed
FROM test
Другие вопросы по тегам