forked from dotnet/efcore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
76 lines (60 loc) · 3.05 KB
/
Copy pathProgram.cs
File metadata and controls
76 lines (60 loc) · 3.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using Microsoft.Data.Sqlite;
namespace DateAndTimeSample
{
class Program
{
static void Main()
{
var connection = new SqliteConnection("Data Source=:memory:");
connection.Open();
// SQLite doesn't support primitive DateTime and TimeSpan values. Instead, it
// provides date and time functions to help you perform operations based on strings
// and Julian day values.
var dateTime1 = new DateTime(2017, 10, 20);
var dateTime2 = new DateTime(2017, 10, 16);
var timeSpan1 = new TimeSpan(1, 00, 0);
var timeSpan2 = new TimeSpan(0, 30, 0);
var command = connection.CreateCommand();
command.CommandText =
@"
SELECT
-- Comparisons work as expected
$dateTime1 > $dateTime2,
$timeSpan1 > $timeSpan2,
-- DateTime operations require converting to Julian days
julianday($dateTime1) - julianday($dateTime2),
-- TimeSpan operations require REAL parameters
$realTimeSpan1 - $realTimeSpan2,
-- More examples
julianday($dateTime1) - $realTimeSpan1,
$realTimeSpan1 / $realTimeSpan2,
$realTimeSpan1 / 2.0
";
command.Parameters.AddWithValue("$dateTime1", dateTime1);
command.Parameters.AddWithValue("$dateTime2", dateTime2);
command.Parameters.AddWithValue("$timeSpan1", timeSpan1);
command.Parameters.AddWithValue("$timeSpan2", timeSpan2);
command.Parameters.Add("$realTimeSpan1", SqliteType.Real).Value = timeSpan1;
command.Parameters.Add("$realTimeSpan2", SqliteType.Real).Value = timeSpan2;
using (var reader = command.ExecuteReader())
{
reader.Read();
var dateTimeComparison = reader.GetBoolean(0);
Console.WriteLine($"{dateTime1} > {dateTime2} = {dateTimeComparison}");
var timeSpanComparison = reader.GetBoolean(1);
Console.WriteLine($"{timeSpan1} > {timeSpan2} = {timeSpanComparison}");
var dateTimeDifference = reader.GetTimeSpan(2);
Console.WriteLine($"{dateTime1} - {dateTime2} = {dateTimeDifference}");
var timeSpanDifference = reader.GetTimeSpan(3);
Console.WriteLine($"{timeSpan1} - {timeSpan2} = {timeSpanDifference}");
var dateTimeSubtractTimeSpan = reader.GetDateTime(4);
Console.WriteLine($"{dateTime1} - {timeSpan1} = {dateTimeSubtractTimeSpan}");
var timeSpanDividedByTimeSpan = reader.GetDouble(5);
Console.WriteLine($"{timeSpan1} / {timeSpan2} = {timeSpanDividedByTimeSpan}");
var timeSpanDividedByDivisor = reader.GetTimeSpan(6);
Console.WriteLine($"{timeSpan1} / 2.0 = {timeSpanDividedByDivisor}");
}
}
}
}