Небольшая вариация решения fgm с использованием встроенной команды read
для разбиения строки на массив. Обратите внимание, что область действия переменной IFS
ограничена командой read
(поэтому нет необходимости сохранять и восстанавливать текущую переменную IFS
).
version='1.2.33'
IFS='.' read -r -a a <<<"$version"
((a[2]++))
printf '%s\n' "${a[@]}" | nl
version="${a[0]}.${a[1]}.${a[2]}"
echo "$version"
SELECT CONVERT(char(10), GetDate(),126)
Ограничение размера отбрасываемых варчаров части часа, которая вам не нужна.
Функция convert
со спецификатором формата 120 даст вам формат «гггг-ММ-дд ЧЧ: мм: сс», поэтому вам просто нужно ограничить длину до 10, чтобы получить только часть даты:
convert(varchar(10), theDate, 120)
Однако форматирование дат обычно лучше выполнять на уровне представления, а не в база данных или бизнес-уровень. Если вы вернете дату, отформатированную из базы данных, тогда клиентский код должен будет снова проанализировать ее до даты, если ему нужно выполнить какие-либо вычисления с ней.
Пример в C #:
theDate.ToString("yyyy-MM-dd")
В вашей ссылке преобразования и преобразования используйте стиль 126 таким образом:
CONVERT (varchar (10), DTvalue, 126)
Это усекает время. Ваше требование иметь его в формате гггг-мм-дд означает, что это должен быть строковый тип данных и дата и время.
Честно говоря, я бы сделал это на клиенте, если у вас нет веских причин не делать этого.
Форма, которую вы ищете, указана в электронной документации к книгам.
http://msdn.microsoft.com/en-us/library/aa226054 (SQL.80) .aspx
Например, попробуйте следующее:
select convert(varchar,getDate(),120)
select convert(varchar(10),getDate(),120)