|
1
|
|
|
<?php |
|
2
|
|
|
|
|
3
|
|
|
namespace Vectorface\MySQLite\MySQL; |
|
4
|
|
|
|
|
5
|
|
|
/** |
|
6
|
|
|
* Provides Date and Time MySQL compatibility functions for SQLite. |
|
7
|
|
|
* |
|
8
|
|
|
* http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html |
|
9
|
|
|
*/ |
|
10
|
|
|
trait DateTime |
|
11
|
|
|
{ |
|
12
|
|
|
/** |
|
13
|
|
|
* NOW - Return the current date and time |
|
14
|
|
|
* |
|
15
|
|
|
* @return string The current timestamp, in MySQL's date format. |
|
16
|
|
|
*/ |
|
17
|
1 |
|
public static function mysql_now() |
|
18
|
|
|
{ |
|
19
|
1 |
|
return date("Y-m-d H:i:s"); |
|
20
|
|
|
} |
|
21
|
|
|
|
|
22
|
|
|
/** |
|
23
|
|
|
* TO_DAYS - Return the date argument converted to days |
|
24
|
|
|
* |
|
25
|
|
|
* @param string $date A date to be converted to days. |
|
26
|
|
|
* @return int The date converted to a number of days since year 0. |
|
27
|
|
|
*/ |
|
28
|
1 |
|
public static function mysql_to_days($date) |
|
29
|
|
|
{ |
|
30
|
|
|
// Why does this work on my Debian machine with PHP 5.6, and not on Travis? |
|
31
|
|
|
// - strtotime("0000-12-31") yields -62135665200 |
|
32
|
|
|
// - 60 * 60 * 24 is 86400 (seconds) |
|
33
|
|
|
// - 1413108827 / 86400 = -719162.79166667, python similarly says -719162.7916666666 |
|
34
|
|
|
// - ceil bumps it up 1 to -719162 |
|
35
|
|
|
// - 719527 + (-719162), python agrees |
|
36
|
|
|
// - So why is Travis giving me 364?!? Their PHP is configured for a different timezone (I think)! |
|
37
|
1 |
|
return intval(719528 + ((strtotime($date) - date("Z")) / (60 * 60 * 24))); |
|
38
|
|
|
} |
|
39
|
|
|
|
|
40
|
|
|
/** |
|
41
|
|
|
* UNIX_TIMESTAMP - Return a UNIX timestamp |
|
42
|
|
|
* |
|
43
|
|
|
* @param string $date The date to be converted to a unix timestamp. Defaults to the current date/time. |
|
44
|
|
|
* @return int The number of seconds since the unix epoch. |
|
45
|
|
|
*/ |
|
46
|
1 |
|
public static function mysql_unix_timestamp($date = null) |
|
47
|
|
|
{ |
|
48
|
1 |
|
if (!isset($date)) { |
|
49
|
1 |
|
return time(); |
|
50
|
|
|
} elseif (count_chars(str_replace([":", "-", " "], "", $date), 3) === "0") { |
|
51
|
|
|
return 0; /* MySQL's implementation returns zero for 0000-00-00 00:00:00 and similar */ |
|
52
|
1 |
|
} |
|
53
|
|
|
|
|
54
|
|
|
return strtotime($date); |
|
55
|
|
|
} |
|
56
|
|
|
} |
|
57
|
|
|
|