MySQL datetime – aktuální datum

bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Ahoj, snažím se v MySQL insertu vložit aktuální čas a datum pomocí now(). Místo datumu se vloží text now(). Vyřešil jsem to pomocí date('Y-m-d H:i:s'). Je to ideální řešení?

Kamil Valenta
Člen | 822
+
+1
-
  1. ukaž, jak jsi ten dotaz v Nette vytvořil, asi to nebyl literal()
  2. ukaž strukturu tabulky, je velmi s podivem, že sloupec validně přijal hodnotu „now()“ jako string
  3. date() je samozřejmě také úplně v pohodě, je to php ekvivalent now() v sql
bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Dotaz vytvářím takto: `$this->database->table(‚tabulka‘)->insert(array(
‚jmeno‘ ⇒ $values->name,
‚cas‘ ⇒ ‚now()‘));`

Struktura tabulky: https://ctrlv.cz/…/01/7uqg.png

Marek Znojil
Člen | 90
+
+1
-

bdinvpvsmvpscuiqpc napsal(a):

Dotaz vytvářím takto: `$this->database->table(‚tabulka‘)->insert(array(
‚jmeno‘ ⇒ $values->name,
‚cas‘ ⇒ ‚now()‘));`

Struktura tabulky: https://ctrlv.cz/…/01/7uqg.png

Ahoj,

můžeš aktuální datum i čas vložit takto:

$this->database->table('tabulka')
  ->insert([
    'jmeno' => $values->name,
    'cas' => new \DateTime,
  ]);

Explorer si s tím poradí.

Pokud víš, že sloupec cas bude vždy datum a čas vytvoření záznamu, tak také může v databázi nastavit sloupci výchozí hodnotu na now() resp. current_timestamp().

David Matějka
Moderator | 6445
+
+1
-

Jinak, jak už naznačil Kamil, můžeš využít i sql literal:

$this->database->table('tabulka')
  ->insert([
    'jmeno' => $values->name,
    'cas' => new \Nette\Database\Literal('now()'),
  ]);
bdinvpvsmvpscuiqpc
Člen | 57
+
0
-

Děkuji