У меня есть база данных с таблицей Publications, которая может быть присоединена к iself через таблицу SubPublications.
Моя хранимая процедура возвращает все отдельные комбинации года и месяца из поля ReleaseDate Publicationsуказанный тип, который не связан с конкретной публикацией (по идентификатору) (отсюда 2 параметра, см. ниже).
ВОПРОС:
Процесс работает нормально, но я хочу, чтобы тип возвращаемого столбца был DateTime2 с фиктивной датой 1. Как сейчас, он возвращает 2 столбца целых чисел. Как мне это сделать?
Я знаю, что могу выполнить преобразование в коде моего приложения, но я бы предпочел, чтобы оно доставлялось как дата / время из БД.
Мой SQL не очень хорош.Я даже не знаю, должен ли я использовать приведение или преобразование.
Я не могу найти в Интернете пример преобразования назад к дате и времени в таком запросе.Кто-нибудь может помочь?Вот прок, который я написал, в том виде, в каком он стоит:
ALTER PROCEDURE sp_DistinctPubMonthYears
@PubType char(1),
@PubId int = 0
AS
BEGIN
SELECT
DISTINCT TOP (100) PERCENT
DATEPART(month, ReleaseDate) AS month,
DATEPART(year, ReleaseDate) AS year
FROM(
SELECT
Publications.ReleaseDate AS ReleaseDate,
Publications.PublicationId As PubId,
Publications.PubType AS PubType,
SubPublications.PublicationId AS ParentId
FROM
Publications LEFT JOIN SubPublications
ON
Publications.PublicationId = SubPublications.PublicationId
WHERE
Publications.PubType = @PubType AND
Publications.PublicationId <> @PubId AND
(
SubPublications.PublicationId <> @PubId OR
/*either it's parent is NOT the one we're searching on or */
SubPublications.PublicationId IS NULL
/*or it's not joined to anything at all */
)
) AS sub
ORDER BY year ASC, month ASC
END
GO