2 * Firebird ADO.NET Data provider for .NET and Mono
4 * The contents of this file are subject to the Initial
5 * Developer's Public License Version 1.0 (the "License");
6 * you may not use this file except in compliance with the
7 * License. You may obtain a copy of the License at
8 * http://www.firebirdsql.org/index.php?op=doc&id=idpl
10 * Software distributed under the License is distributed on
11 * an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
12 * express or implied. See the License for the specific
13 * language governing rights and limitations under the License.
15 * Copyright (c) 2002, 2005 Carlos Guzman Alvarez
16 * All Rights Reserved.
20 using System.Globalization;
22 namespace FirebirdSql.Data.Common
24 internal sealed class TypeEncoder
34 #region Static Methods
36 public static object EncodeDecimal(decimal d, int scale, int sqltype)
42 multiplier = (long)System.Math.Pow(10, scale * (-1));
47 case IscCodes.SQL_SHORT:
48 return (short)(d * multiplier);
50 case IscCodes.SQL_LONG:
51 return (int)(d * multiplier);
53 case IscCodes.SQL_QUAD:
54 case IscCodes.SQL_INT64:
55 return (long)(d * multiplier);
57 case IscCodes.SQL_DOUBLE:
63 public static int EncodeTime(DateTime d)
65 GregorianCalendar calendar = new GregorianCalendar();
68 (int)(calendar.GetHour(d) * 3600000 +
69 calendar.GetMinute(d) * 60000 +
70 calendar.GetSecond(d) * 1000 +
71 calendar.GetMilliseconds(d)) * 10;
76 public static int EncodeDate(DateTime d)
81 GregorianCalendar calendar = new GregorianCalendar();
83 day = calendar.GetDayOfMonth(d);
84 month = calendar.GetMonth(d);
85 year = calendar.GetYear(d);
100 return ((146097 * c) / 4 +
102 (153 * month + 2) / 5 +
103 day + 1721119 - 2400001);