55using NUnit . Framework ;
66using ServiceStack . DataAnnotations ;
77using ServiceStack . Model ;
8+ using ServiceStack . OrmLite . Legacy ;
9+ using ServiceStack . OrmLite . MySql . Converters ;
10+ using ServiceStack . Text ;
811
912namespace ServiceStack . OrmLite . MySql . Tests
1013{
@@ -15,52 +18,80 @@ public class DateTimeColumnTest
1518 [ Test ]
1619 public void Can_create_table_containing_DateTime_column ( )
1720 {
18- using ( var db = OpenDbConnection ( ) )
19- {
20- db . CreateTable < Analyze > ( true ) ;
21- }
21+ using var db = OpenDbConnection ( ) ;
22+ db . CreateTable < Analyze > ( true ) ;
2223 }
2324
2425 [ Test ]
2526 public void Can_store_DateTime_Value ( )
2627 {
27- using ( var db = OpenDbConnection ( ) )
28- {
29- db . CreateTable < Analyze > ( true ) ;
28+ using var db = OpenDbConnection ( ) ;
29+ db . CreateTable < Analyze > ( true ) ;
3030
31- var obj = new Analyze {
32- Id = 1 ,
33- Date = DateTime . Now ,
34- Url = "http://www.google.com"
35- } ;
31+ var obj = new Analyze {
32+ Id = 1 ,
33+ Date = DateTime . Now ,
34+ Url = "http://www.google.com"
35+ } ;
3636
37- db . Save ( obj ) ;
38- }
37+ db . Save ( obj ) ;
3938 }
4039
4140 [ Test ]
4241 public void Can_store_and_retrieve_DateTime_Value ( )
4342 {
44- using ( var db = OpenDbConnection ( ) )
45- {
46- db . CreateTable < Analyze > ( true ) ;
43+ using var db = OpenDbConnection ( ) ;
44+ db . CreateTable < Analyze > ( true ) ;
45+
46+ var obj = new Analyze {
47+ Id = 1 ,
48+ Date = DateTime . Now ,
49+ Url = "http://www.google.com"
50+ } ;
4751
48- var obj = new Analyze {
49- Id = 1 ,
50- Date = DateTime . Now ,
51- Url = "http://www.google.com"
52- } ;
52+ db . Save ( obj ) ;
5353
54- db . Save ( obj ) ;
54+ var id = ( int ) db . LastInsertId ( ) ;
55+ var target = db . SingleById < Analyze > ( id ) ;
5556
56- var id = ( int ) db . LastInsertId ( ) ;
57- var target = db . SingleById < Analyze > ( id ) ;
57+ Assert . That ( target , Is . Not . Null ) ;
58+ Assert . That ( target . Id , Is . EqualTo ( id ) ) ;
59+ Assert . That ( target . Date , Is . EqualTo ( obj . Date ) . Within ( TimeSpan . FromSeconds ( 1 ) ) ) ;
60+ Assert . That ( target . Url , Is . EqualTo ( obj . Url ) ) ;
61+ }
5862
59- Assert . That ( target , Is . Not . Null ) ;
60- Assert . That ( target . Id , Is . EqualTo ( id ) ) ;
61- Assert . That ( target . Date , Is . EqualTo ( obj . Date ) . Within ( TimeSpan . FromSeconds ( 1 ) ) ) ;
62- Assert . That ( target . Url , Is . EqualTo ( obj . Url ) ) ;
63+ [ Test ]
64+ public void Can_change_DateTime_precision ( )
65+ {
66+ using var db = OpenDbConnection ( ) ;
67+ if ( MySqlDialect . Provider . GetConverter ( typeof ( DateTime ) ) is MySqlDateTimeConverterBase dateConverter )
68+ {
69+ dateConverter . Precision = 3 ;
6370 }
71+
72+ OrmLiteUtils . PrintSql ( ) ;
73+ db . CreateTable < Analyze > ( true ) ;
74+
75+ var obj = new Analyze {
76+ Id = 1 ,
77+ Date = DateTime . Now ,
78+ Url = "http://www.google.com"
79+ } ;
80+
81+ db . Save ( obj ) ;
82+
83+ var id = ( int ) db . LastInsertId ( ) ;
84+ var target = db . SingleById < Analyze > ( id ) ;
85+ target . PrintDump ( ) ;
86+
87+ var q = db . From < Analyze > ( )
88+ . Where ( x => x . Date >= DateTime . Now . Date ) ;
89+ var results = db . Select ( q ) ;
90+ Assert . That ( results . Count , Is . EqualTo ( 1 ) ) ;
91+ results . PrintDump ( ) ;
92+
93+ results = db . SelectFmt < Analyze > ( "AnalyzeDate >= {0}" , DateTime . Now . AddDays ( - 1 ) ) ;
94+ results . PrintDump ( ) ;
6495 }
6596
6697 /// <summary>
0 commit comments