Denis Gladkikh
Russian   |  English

Выбранный тег: TSQL

Подходы для версионирования баз данных

У нас достаточно молодая сейчас команда, времени особо нет на эксперименты, развитие проекта идет семимильными шагами. Попробовали несколько подходов для хранения/версионирования баз данных. Хотел бы с вами поделиться проблемами, которые мы встречали, а так же нашими решениями. Ну и с удовольствием выслушаю ваши комментарии, предложения, рекомендации.



TSQL: Передача списка/коллекции/множества в хранимую процедуру

Передача множества в хранимую процедуру довольно-таки частая задача. Встречается, например, при фильтрации какой-нибудь коллекции. Так же это может быть импорт данных в базу данных из внешних источников. Я рассмотрю несколько вариантов, которые можно использовать в вашем приложении: склеивание SQL запроса, передача строки списка параметров, разделенных запятой, Bulk Insert, а так же table-valued parameters (самый интересный вариант, пришедший с MS SQL Server 2008).



Разработка веб-приложений с поддержкой временных зон

При разработке веб-приложений важно помнить о том, что клиентские компьютеры могут быть разбросаны достаточно сильно по земному шару. Даже если разрабатывать приложение только для русских пользователей, то наберется 11 временных зон. Меня очень сильно удивило и расстроило, что достаточно известные сайты http://habrahabr.ru и http://gotdotnet.ru об этом вообще не задумываются. На таких сайтах сделать поддержку временных зон еще проще, там есть профили пользователей, в которых пользователи запросто смогли бы выставлять временную зону в которой они находятся. Таким образом, например, реализована поддержка временных зон в Sharepoint, и таким образом реализовывают поддержку в большинстве enterprise приложений. А что же делать когда нет поддержки профайлов на сервере? Что, если это просто новостной сайт или блог, и хочется чтобы пользователи с любой точки земного шара видели время не в будущем, а публиковали комментарии видя свое текущее локальное время.



MS SQL Server: Убираем время из значения типа datetime

Этот текст является в какой то мере переводом топика Kevin Jones - Removing time from SQL datetime, так что если вы хорошо знаете английский, то лучше, наверное, читать руководство из первых рук. Правда, мой вариант дополнен некоторыми тестами.

Итак, мы довольно часто используем SQL сервер для хранения данных с типом дата и время. В SQL Server 2005/2000 существуют два типа данных (специальных типов данных) для хранения даты и времени – это datetime и smalldatetime, разница между ними в возможностях хранения (от и до), точности времени и, соответственно, в количестве используемой памяти. В SQL Server 2008 появились дополнительные типы данных, такие как datetime2, time, date, datetimeoffset, о них вы можете прочитать в статье на MSDN - Типы данных и функции даты и времени (Transact-SQL).

Вернемся же к типу DATETIME. Часто возникает необходимость выбрать из типа DATETIME только дату, а время установить равным 0:00. Не приходиться об этом думать, когда нужно просто вывести результат – тогда все можно сделать форматом вывода, например в C# это может быть “dd.MM.yyyy”. Другое дело, если с данными нужно еще оперировать (например, группировать по дате или что то прибавить или убавить), тогда нам необходим тип DATETIME, в котором нам нужно обнулять время.