DateTime and DateTime2
Problem:
Conversions from the DATETIME2 data type to the datetime data type produce an out-of-range value
Reason:
The model in EF has a datetime type field, and if you do not assign a value, the default is to generate a time value of 0001-01-01 0:00:00, which belongs to the datetime2 type and is stored in the database with an error.
How to resolve:
1. Change the data type of all the DateTime type fields in the database to DATETIEM2
2. Modify the DateTime type in model to datetime?
3. When storing, the value of DateTime type is assigned operation, =datetime.now;
Comments:
DateTime2 is starting from SQL2008 to support a new date data type.
The time format for the DateTime field type is Yyyy-mm-dd hh:mm:ss.fff,3 F, which is accurate to 1 milliseconds (ms), example 2014-12-0317:06:15.433. DateTime support dates from January 1, 1753 to December 31, 9999, the time portion of the accuracy is 3.33 milliseconds, it requires 8 bytes of storage space.
The DateTime2 field type corresponds to a time format of Yyyy-mm-dd hh:mm:ss.fffffff,7 F, which is accurate to 0.1 microseconds (μs), example 2014-12-0317:23:19.2880929. DateTime2 support from January 01, 01 to December 31, 9999, the time part of the precision is 100 nanoseconds, occupies 6 to 8 bytes of storage space, depending on the accuracy of storage. DateTime2 (N) represents the precision of the second, n=0 to 7, which represents the number of seconds after the exact second. DateTime (0) is accurate to seconds, DateTime2 (3) is equivalent to the original datetime type, but can be accurate to 1 milliseconds, takes up 7 bytes, DateTime2 (7) can achieve the highest precision, 100 nanoseconds.
If the date function of SQL is assigned, the DateTime field type is GETDATE () and the DateTime2 field type is Sysdatetime ().
datetime data type Save problem (DateTime2)