Найдите в прошлое воскресенье

Вы могли выполнить все свои запросы против представления, которое содержит WHERE IS_DELETED='0' пункт.

12
задан gbn 14 May 2010 в 19:28
поделиться

6 ответов

Я не пользователь LFE, но есть руководство пользователя в исходное дерево. Прочитав это, я бы предположил, что это примерно так:

(let ((A 2))
  (let ((Pid (spawn (lambda ()
                      (receive
                        (B (when (is_integer B))
                          (: io format "Added: ~p~n" (list (+ A B))))
                        (_ nan))))))
    (! Pid 5)))

Но я, скорее всего, совершил ошибку, поскольку я даже не оценил это в LFE.

14
ответ дан 2 December 2019 в 06:45
поделиться

Сначала построили таблицу подсчета. http://www.sqlservercentral.com/articles/T-SQL/62867/ тогда получите то, что хотите ..

http://www.sqlservercentral.com/Forums/Topic515226-1291-1.aspx

DECLARE @DateStart DATETIME,
        @DateEnd   DATETIME

 SELECT @DateStart = '20080131',
        @DateEnd   = '20101201'

 SELECT DATEADD(wk,DATEDIFF(wk,6,DATEADD(mm,DATEDIFF(mm,-1,DATEADD(mm,t.N-1,@DateStart)),-1)),6)
   FROM dbo.Tally t
  WHERE t.N <= DATEDIFF(mm,@DateStart,@DateEnd)
0
ответ дан 2 December 2019 в 06:45
поделиться

Альтернативный подход, заимствованный из практики хранения данных. Создайте таблицу измерения даты и предварительно загрузите ее примерно на 10 лет.

TABLE dimDate (DateKey, FullDate, Day, Month, Year, DayOfWeek, 
               DayInEpoch, MonthName, LastDayInMonthIndicator, many more..)

Самый простой способ заполнить dimDate - провести полдня с Excel, а затем импортировать оттуда в БД . Наполовину приличная таблица dimDate имеет более 50 столбцов - все, что вы когда-либо хотели знать о дате.

После этого вопрос становится примерно таким:

SELECT max(FullDate)
FROM dimDate
WHERE DayOfWeek = 'Sunday'
      AND Month = 11
      AND Year = 2009;

По сути, все, относящиеся к дате запросы становятся проще.

2
ответ дан 2 December 2019 в 06:45
поделиться
DECLARE @LastDateOfMonth smalldatetime
SELECT @LastDateOfMonth = DATEADD(month, DATEDIFF(month, -1, GETDATE()), 0) -1
Select DATEADD(dd,-( CASE WHEN DATEPART(weekday,@LastDateOfMonth) = 1 THEN 0 ELSE DATEPART(weekday,@LastDateOfMonth) - 1 END ),@LastDateOfMonth)
1
ответ дан 2 December 2019 в 06:45
поделиться

Святая корова, это уродливо, но вот:

DECLARE @dtDate DATETIME
SET @dtDate = '2009-11-05'

SELECT DATEADD(dd, -1*(DATEPART(dw, DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))-1),
            DateAdd(day, -1, DateAdd(month, DateDiff(month, 0, @dtDate)+1, 0)))
0
ответ дан 2 December 2019 в 06:45
поделиться
select next_day(last_day(sysdate)-7, 'Sunday') from dual
-1
ответ дан 2 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: