@@ -101,6 +101,109 @@ public void Can_change_DateTime_precision()
101
101
results . PrintDump ( ) ;
102
102
}
103
103
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
+
104
207
/// <summary>
105
208
/// Provided by RyogoNA in issue #38 https://github.com/ServiceStack/ServiceStack.OrmLite/issues/38#issuecomment-4625178
106
209
/// </summary>
0 commit comments