РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
109 of 1392 menu

Метод timestampTz

Метод timestampTz применяется в миграциях Laravel для создания колонки типа TIMESTAMP WITH TIME ZONE. Этот метод позволяет хранить дату и время вместе с информацией о часовом поясе. В отличие от метода timestamp, который хранит время без учёта часового пояса, timestampTz автоматически преобразует время в часовой пояс базы данных при сохранении и обратно при извлечении. Метод может принимать параметр точности (precision) для указания количества дробных знаков в секундах.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->timestampTz($column, $precision = 0); }); ?>

Пример с миграцией

Давайте создадим миграцию для таблицы 'events' с колонкой 'started_at', которая будет хранить временную метку с часовым поясом:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('events', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestampTz('started_at'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('events'); } }; ?>

Результат выполнения миграции:

"Table events created successfully"

Пример с указанием точности

Давайте создадим миграцию с колонкой, которая будет хранить время с точностью до миллисекунд:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('measurements', function (Blueprint $table) { $table->id(); $table->string('device'); $table->timestampTz('measured_at', 3); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('measurements'); } }; ?>

Результат выполнения миграции:

"Table measurements created successfully"

Пример работы с моделью

Давайте создадим модель Event и сохраним запись с временной меткой:

<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; class Event extends Model { protected $fillable = ['name', 'started_at']; protected $casts = [ 'started_at' => 'datetime', ]; } ?>
<?php namespace App\Http\Controllers; use App\Models\Event; use Carbon\Carbon; class EventController extends Controller { public function store() { $event = Event::create([ 'name' => 'Conference 2026', 'started_at' => Carbon::now('Europe/Moscow'), ]); echo $event->id; } } ?>

Результат выполнения кода:

"1"

Пример извлечения данных

Давайте получим все события и выведем их время с учётом часового пояса:

<?php namespace App\Http\Controllers; use App\Models\Event; class EventController extends Controller { public function index() { $events = Event::all(); foreach ($events as $event) { echo $event->name . ': ' . $event->started_at->toDateTimeString(); } } } ?>

Результат выполнения кода:

"Conference 2026: 2026-01-01 10:00:00"

Пример с использованием nullable

Давайте создадим колонку, которая может содержать значение NULL:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('schedules', function (Blueprint $table) { $table->id(); $table->string('task'); $table->timestampTz('completed_at')->nullable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('schedules'); } }; ?>

Результат выполнения миграции:

"Table schedules created successfully"

Смотрите также

  • метод timestamp,
    который создаёт колонку с временной меткой без часового пояса
  • метод dateTimeTz,
    который создаёт колонку с датой и временем с часовым поясом
  • метод date,
    который создаёт колонку только для хранения даты
  • метод time,
    который создаёт колонку только для хранения времени
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить