-- An SQL User defined function to round off date time-- to nearest half an hour point CREATE FUNCTION RoundOffHours( @myTime datetime) RETURNS datetime ASBEGIN DECLARE @RoundedTime datetime SELECT @RoundedTime = dateadd( minute, CASE WHEN (datepart(minute,@myTime)) BETWEEN 0 AND 14 THEN 0 WHEN (datepart(minute,@myTime)) BETWEEN 15 AND 30 THEN 30 WHEN (datepart(minute,@myTime)) BETWEEN 31 AND 44 THEN 30 WHEN (datepart(minute,@myTime)) BETWEEN 45 AND 60 THEN 60 END, dateadd( minute, - datepart(minute, @myTime),@myTime) ) RETURN @RoundedTime END -- Usage : SELECT dbo.RoundOffHours('2010-05-11 10:01') SELECT dbo.RoundOffHours('2010-05-11 10:14') SELECT dbo.RoundOffHours('2010-05-11 10:16') SELECT dbo.RoundOffHours('2010-05-11 10:29') SELECT dbo.RoundOffHours('2010-05-11 10:31') SELECT dbo.RoundOffHours('2010-05-11 10:44') SELECT dbo.RoundOffHours('2010-05-11 10:46') SELECT dbo.RoundOffHours('2010-05-11 10:59')
public class GenericConverter { public static T Parse<T>(string sourceValue) where T : IConvertible { return (T)Convert.ChangeType(sourceValue, typeof(T)); } public static T Parse<T>(string sourceValue, IFormatProvider provider) where T : IConvertible { return (T)Convert.ChangeType(sourceValue, typeof(T), provider); } } public static class TConverter { public static T ChangeType<T>(object value) { return (T)ChangeType(typeof(T), value); } public static object ChangeType(Type t, object value) { TypeConverter tc = TypeDescriptor.GetConverter(t); return tc.ConvertFrom(value); } public static void RegisterTypeConverter<T, TC>() where TC : TypeConverter { TypeDescriptor.AddAttributes(typeof(T), new TypeConverterAttribute(typeof(TC))); } } ----------------
Comments
Post a Comment