Возможно, вы слишком много читаете в своем вопросе, но если ваша цель - вычислить возраст (в днях) с определенной даты (сегодня?) До даты, хранящейся в ваших таблицах, то вам будет лучше используя DATEDIFF function и вычисляя значение, когда вы запрашиваете его каждый раз.
Например:
-- Option 1: Compute when you query it each time in the query you require it
SELECT d.[Date], DATEDIFF(dd, d.[Date], CONVERT(DATE, GETDATE())) as [Age]
FROM tblDates AS d
Вы также можете определить столбец Возраст на вашем столе в качестве колонки Компьютерной если она будет использоваться достаточно часто, или обернуть таблицы в представлении, чтобы встроить это вычисление:
-- Option 2: Compute at query time, but build the computation into the table definition
CREATE TABLE [dbo].[tblDates] (
[Date] DATE NOT NULL,
[AgeInDaysComputed] AS (DATEDIFF(dd, [Date], CONVERT(DATE, GETDATE())))
)
GO
-- Option 3: Compute at query time, but require caller interact with a different object
-- (view) to get the computation
CREATE VIEW [dbo].[vwDates]
AS
SELECT d.[Date], DATEDIFF(dd, d.[Date], CONVERT(DATE, GETDATE())) as [AgeInDays]
FROM dbo.tblDates AS D
GO
Замечание относительно функции GETDATE: вам необходимо знать часовой пояс вашего сервера, так как GETDATE возвращает дату в соответствии с локальным часовым поясом вашего сервера. Пока конфигурация вашего сервера и пользовательские конфигурации находятся в одном и том же часовом поясе, это должно обеспечить правильный результат.
(Если возраст в то время, который вы пытаетесь вычислить, вы можете отредактировать свой вопрос, чтобы лучше отразить это намерение в интересах будущих читателей, поскольку он сильно отличается от «переупорядочения значений столбцов ")
Вам нужно лучше определить, как рассчитывается« возраст ». Является ли это просто прямым номером строки, как указано по дате? Что делать, если есть повторяющиеся или отсутствующие даты? Также почему вам нужно сохранить это значение? –
Затем введите кластеризованный индекс по возрасту с desc. Почему SQL, TSQL, 2008 и 2012. Это не может быть все это. – Paparazzi
порядок строк в СУБД не имеет значения. Используйте предложение ORDER BY, чтобы увидеть строки в определенном порядке. –