用于在包含年度数据行的表中存储年份字段的列类型

时间:2015-06-09 11:05:38

标签: mysql database laravel database-design

我的Laravel网络应用程序使用schema builder进行数据库可移植性,因此MySQL-specific YEAR column type不可用。

我希望能够按年度排序和选择数据行(包括BETWEEN)。什么是存储年份值的最佳便携式列类型?

4 个答案:

答案 0 :(得分:5)

  

用于存储年份值的最佳便携式列类型是什么?

smallint是表示年份的好选择,它是ANSI SQL,因此可以在大多数数据库中使用。它将持续到32767年。

某些数据库支持create domain,它基本上允许您创建自己的类型。您可以为其他数据库创建year域。尽管如此,我更喜欢smallint的简单性。

答案 1 :(得分:1)

你可以这样做:

>>(n, m)

答案 2 :(得分:1)

我认为这应该有效:

public function up()
{
    Schema::create('mytable', function(Blueprint $table)
    {
        $table->increments('id');
        // columns
        $table->timestamps();
    });

    DB::statement('ALTER mytable ADD year YEAR' );

}

如果Laravel在即将推出的版本中提供了访问此方法的任何方法(在Schema::table('tablea_name', function(Blueprint $table) { DB::statement('ALTER TABLE table_name ADD year YEAR(4);'); }); 中),便携式解决方案将会出现:

/vendor/laravel/framework/src/Illuminate/Database/Schema/Blueprint.php

答案 3 :(得分:0)

与Laravel 5.8一样,您可以执行以下操作:

$table->year('birth_year');