Дата и время SQL Server КАК выбор?

Массивы имеют O (1) произвольный доступ, но являются действительно дорогими, чтобы добавить материал на или удалить материал из.

Связанные списки являются действительно дешевыми, чтобы добавить или удалить объекты куда угодно и выполнить итерации, но произвольный доступ является O (n).

88
задан radbyx 14 March 2019 в 11:48
поделиться

4 ответа

perl -lape 's/^\s+|\s+$//g'

Честно говоря, я лучше всех знаю регулярные выражения Perl, поэтому считаю, что perl -lape намного проще в использовании, чем sed -e .

Также , чтобы ответить на исходный вопрос, вы можете заставить sed выполнить несколько таких операций:

sed -e 's/something/something else/' -e 's/another substitution/another replacement/'

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

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

AND    DATEPART(hh, register_date) = 12)

, чтобы получить записи, сделанные между 12 и 1.

Полный список см. В документах MSDN DATEPART . веских аргументов.

129
ответ дан 24 November 2019 в 07:28
поделиться

Прямая поддержка оператора LIKE для переменных DATETIME отсутствует, но вы всегда можете преобразовать DATETIME в VARCHAR:

SELECT (list of fields) FROM YourTable
WHERE CONVERT(VARCHAR(25), register_date, 126) LIKE '2009-10-10%'

Посмотрите документы MSDN для получения полного списка доступные "стили" в функции CONVERT.

Marc

54
ответ дан 24 November 2019 в 07:28
поделиться

Если вы это сделаете, вы заставите его выполнить преобразование строки. Было бы лучше создать диапазон дат начала / окончания и использовать:

declare @start datetime, @end datetime
select @start = '2009-10-10', @end = '2009-11-10'
select * from record where register_date >= @start
           and register_date < @end

Это позволит использовать индекс (если он есть на register_date ), а не сканирование таблицы.

10
ответ дан 24 November 2019 в 07:28
поделиться

Вы можете использовать CONVERT, чтобы получить дату в текстовой форме. Если вы конвертируете его в varchar (10), вы можете использовать = вместо подобного:

select *
from record
where CONVERT(VARCHAR(10),register_date,120) = '2009-10-10'

Или вы можете использовать верхнюю и нижнюю граничные даты, с дополнительным преимуществом, заключающимся в использовании индекса:

select *
from record
where '2009-10-10' <= register_date
and register_date < '2009-10-11'
7
ответ дан 24 November 2019 в 07:28
поделиться
Другие вопросы по тегам:

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