@@ -101,6 +101,109 @@ public void Can_change_DateTime_precision()
101101 results . PrintDump ( ) ;
102102 }
103103
104+ [ Test ]
105+ public void Can_query_DateTime_column_in_select_without_any_format_parameter ( )
106+ {
107+ using var db = OpenDbConnection ( ) ;
108+ db . CreateTable < Analyze > ( true ) ;
109+ var obj = new Analyze
110+ {
111+ Id = 1 ,
112+ Date = DateTime . Now ,
113+ Url = "http://www.google.com"
114+ } ;
115+ db . Save ( obj ) ;
116+
117+ var q = db . From < Analyze > ( ) . Select ( i => i . Date ) ;
118+ var sql = q . ToMergedParamsSelectStatement ( ) ;
119+ var val = db . Select < DateTime > ( q ) . First ( ) ;
120+ Assert . That ( obj . Date , Is . EqualTo ( val ) . Within ( TimeSpan . FromSeconds ( 1 ) ) ) ;
121+ }
122+
123+ [ Test ]
124+ public void Can_query_DateTime_column_in_select_with_format_parameter ( )
125+ {
126+ using var db = OpenDbConnection ( ) ;
127+ db . CreateTable < Analyze > ( true ) ;
128+ var obj = new Analyze
129+ {
130+ Id = 1 ,
131+ Date = DateTime . Now ,
132+ Url = "http://www.google.com"
133+ } ;
134+ db . Save ( obj ) ;
135+ var q = db . From < Analyze > ( ) . Select ( i => i . Date . ToString ( "%Y-%m-%d %H:%i:%s" ) ) ;
136+ var sql = q . ToMergedParamsSelectStatement ( ) ;
137+ var val = db . Select < string > ( q ) . First ( ) ;
138+ Assert . That ( obj . Date , Is . EqualTo ( DateTime . Parse ( val ) ) . Within ( TimeSpan . FromSeconds ( 1 ) ) ) ;
139+ }
140+
141+ [ Test ]
142+ public void Can_query_DateTime_column_in_where_with_format_parameter ( )
143+ {
144+ using var db = OpenDbConnection ( ) ;
145+ db . CreateTable < Analyze > ( true ) ;
146+ var obj = new Analyze
147+ {
148+ Id = 1 ,
149+ Date = DateTime . Now ,
150+ Url = "http://www.google.com"
151+ } ;
152+ var yesterdayString = obj . Date . AddDays ( - 1 ) . ToString ( "yyyy-MM-dd" ) ;
153+ var todayString = obj . Date . ToString ( "yyyy-MM-dd" ) ;
154+ db . Save ( obj ) ;
155+ var q = db . From < Analyze > ( ) . Where ( i=> i . Date . ToString ( "%Y-%m-%d" ) == yesterdayString ) ;
156+ var results = db . Select < Analyze > ( q ) ;
157+ var sql = q . ToMergedParamsSelectStatement ( ) ;
158+ Assert . That ( results . Count , Is . EqualTo ( 0 ) ) ;
159+
160+ q = db . From < Analyze > ( ) . Where ( i => i . Date . ToString ( "%Y-%m-%d" ) == todayString ) ;
161+ results = db . Select < Analyze > ( q ) ;
162+ sql = q . ToMergedParamsSelectStatement ( ) ;
163+ Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
164+
165+ var id = ( int ) db . LastInsertId ( ) ;
166+ var target = db . SingleById < Analyze > ( id ) ;
167+ Assert . That ( target , Is . Not . Null ) ;
168+ Assert . That ( target . Id , Is . EqualTo ( id ) ) ;
169+ Assert . That ( target . Date , Is . EqualTo ( obj . Date ) . Within ( TimeSpan . FromSeconds ( 1 ) ) ) ;
170+ Assert . That ( target . Url , Is . EqualTo ( obj . Url ) ) ;
171+ }
172+
173+ [ Test ]
174+ public void Can_query_DateTime_column_in_select_and_where_with_format_parameter ( )
175+ {
176+ using var db = OpenDbConnection ( ) ;
177+ db . CreateTable < Analyze > ( true ) ;
178+ var obj = new Analyze
179+ {
180+ Id = 1 ,
181+ Date = DateTime . Now ,
182+ Url = "http://www.google.com"
183+ } ;
184+ var yesterdayString = DateTime . Now . AddDays ( - 1 ) . ToString ( "yyyy-MM-dd" ) ;
185+ var todayString = DateTime . Now . ToString ( "yyyy-MM-dd" ) ;
186+ db . Save ( obj ) ;
187+ var q = db . From < Analyze > ( ) . Where ( i => i . Date . ToString ( "%Y-%m-%d" ) == yesterdayString ) . Select ( i=> i . Date . ToString ( "%Y-%m-%d" ) ) ;
188+ var results = db . Select < string > ( q ) ;
189+ var sql = q . ToMergedParamsSelectStatement ( ) ;
190+ Assert . That ( results . Count , Is . EqualTo ( 0 ) ) ;
191+
192+ q = db . From < Analyze > ( ) . Where ( i => i . Date . ToString ( ) == yesterdayString ) . Select ( i => i . Date . ToString ( "%Y-%m-%d" ) ) ;
193+ results = db . Select < string > ( q ) ;
194+ sql = q . ToMergedParamsSelectStatement ( ) ;
195+ Assert . That ( results . Count , Is . EqualTo ( 0 ) ) ;
196+
197+ q = db . From < Analyze > ( ) . Where ( i => i . Date . ToString ( "%Y-%m-%d" ) == todayString ) . Select ( i => i . Date . ToString ( "%Y-%m-%d" ) ) ;
198+ results = db . Select < string > ( q ) ;
199+ sql = q . ToMergedParamsSelectStatement ( ) ;
200+ Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
201+
202+ var target = results . First ( ) ;
203+ Assert . That ( target , Is . Not . Null ) ;
204+ Assert . That ( target , Is . EqualTo ( todayString ) ) ;
205+ }
206+
104207 /// <summary>
105208 /// Provided by RyogoNA in issue #38 https://github.com/ServiceStack/ServiceStack.OrmLite/issues/38#issuecomment-4625178
106209 /// </summary>
0 commit comments