Вот пример
У нас есть даты в одной таблице
Название таблицы: «testdate»
STARTDATE ENDDATE
10/24/2012 10/24/2012
10/27/2012 10/29/2012
10/30/2012 10/30/2012
Требовать Результат:
STARTDATE
10/24/2012
10/27/2012
10/28/2012
10/29/2012
10/30/2012
Решение:
WITH CTE AS
(SELECT DISTINCT convert(varchar(10),StartTime, 101) AS StartTime,
datediff(dd,StartTime, endTime) AS diff
FROM dbo.testdate
UNION ALL SELECT StartTime,
diff - 1 AS diff
FROM CTE
WHERE diff<> 0)
SELECT DISTINCT DateAdd(dd,diff, StartTime) AS StartTime
FROM CTE
Объяснение: CTE Рекурсивное пояснение запроса
SELECT DISTINCT convert(varchar(10), StartTime, 101) AS StartTime, datediff(dd, StartTime, endTime) AS diff FROM dbo.testdate
Объяснение: firstcolumn - «startdate», второй столбец - разность начало и конец даты в днях, и это будет рассматриваться как столбец «diff» UNION ALL SELECT StartTime, diff-1 AS diff FROM CTE WHERE diff<>0
Объяснение: Союз все наследует результат вышеуказанного запроса до результата имеет значение null, поэтому результат «StartTime» наследуется от сгенерированного запроса CTE, а от diff, уменьшения - 1, поэтому он выглядит как 3, 2 и 1 до 0 Например,
STARTDATE DIFF
10/24/2012 0
10/27/2012 0
10/27/2012 1
10/27/2012 2
10/30/2012 0
Спецификация результата
STARTDATE Specification
10/24/2012 --> From Record 1
10/27/2012 --> From Record 2
10/27/2012 --> From Record 2
10/27/2012 --> From Record 2
10/30/2012 --> From Record 3
SELECT DISTINCT DateAdd(dd,diff, StartTime) AS StartTime FROM CTE
Она добавит день «diff» в «startdate», поэтому результат Shou ld будет ниже Результат
STARTDATE
10/24/2012
10/27/2012
10/28/2012
10/29/2012
10/30/2012
Запустите npm prune
для сборки модулей, не перечисленных в package.json
.
Из npm help prune
:
Эта команда удаляет «посторонние» пакеты. Если указано имя пакета, удаляются только пакеты, соответствующие одному из предоставленных имен.
Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.
Если указан флаг
--production
, эта команда удалит пакеты, указанные в ваших devDependencies.
Если вы не беспокоитесь о том, чтобы сделать это пару минут, можно было бы снова rm -rf node_modules
и npm install
перестроить локальные модули.
npm prune [[<@scope>/]<pkg>...] [--production] [--dry-run] [--json]
Эта команда удаляет «посторонние» пакеты. Если указано имя пакета, удаляются только пакеты, соответствующие одному из предоставленных имен.
Посторонние пакеты - это пакеты, которые не перечислены в списке зависимостей родительского пакета.
Если указан флаг - production или для переменной среды NODE_ENV установлено значение production , эта команда удалит пакеты, указанные в . ] devDependencies . Установка - без производства будет отменять NODE_ENV , установленный на производство .
Если используется флаг - всухую , то никаких изменений фактически не будет.
Если используется флаг - json , то изменения npm prune , сделанные (или сделанные с - всухую ), будут напечатаны как объект JSON.
При нормальной работе с включенными блокировками пакетов посторонние модули автоматически удаляются при установке модулей, и вам понадобится только эта команда с флагом - production .
Если вы отключили блокировки пакетов, посторонние модули не будут удалены, и вы можете время от времени запускать npm prune для их удаления.
npm dedupe
npm ddp
Выполняет поиск в локальном дереве пакетов и пытается упростить общую структуру, перемещая зависимости дальше вверх по дереву, где они могут более эффективно использоваться несколькими зависимыми пакетами. .
Например, рассмотрим этот график зависимости:
a
+-- b <-- depends on c@1.0.x
| `-- c@1.0.3
`-- d <-- depends on c@~1.0.9
`-- c@1.0.10
В этом случае npm-dedupe преобразует дерево в:
a
+-- b
+-- d
`-- c@1.0.10
Из-за иерархическая природа поиска модулей узла, b и d, получит свою зависимость, встречаемую одним пакетом c на корневом уровне дерева.
Алгоритм дедупликации обходит дерево, перемещая каждую зависимость как можно выше в дереве, даже если дубликаты не найдены. Это приведет как к плоскому, так и к дедуплицированному дереву.