Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create table with date column

Tags:

mysql

I want to create a student table with column 'student_birthday' and its format should be dd-mm-yy.

create table `student`.`studentinfo`(
    `student_id` int(10) not null auto_increment,
    `student_name` varchar(45) not null,
    `student_surname` varchar(45) not null,
    `student_birthday` date(???),
    (some lines of code)
primary key(student_id));

what should be inputted in the (???) to get the right format above?

like image 500
realheaven Avatar asked Jan 20 '15 09:01

realheaven


People also ask

How do I insert a date column in a table?

Always use ANSI default string literal format for date i.e. YYYY-MM-DD like below. INSERT INTO EMPLOYEE (EMPID, FULLNAME, DESIGNATION, JOINING, SAL, DEPTNAME) VALUES(8976, 'JOHN', 'JOE', 'ANALYST', '1990-12-12', 30000, 'Analytics'); It will insert your data in RDBMS i.e. MySQL, PostgreSQL, SQL Server.

How do you create a date table in SQL?

SQL Date Data TypesDATE - format YYYY-MM-DD. DATETIME - format: YYYY-MM-DD HH:MI:SS. TIMESTAMP - format: YYYY-MM-DD HH:MI:SS. YEAR - format YYYY or YY.

How do you make a table with time columns?

To store the time in your SQL tables, your first step should be to create a column in your table which is capable of storing the time. If you want the time to be stored in the column of your table, you need to create a column with the TIME data type. The TIME data type by default stores the time in "HH:MM:SS" format.


2 Answers

Just use "DATE" without the brackets. The brackets are only needed for certain column types where you want to specify the maximum number of bytes/characters that can be stored.

For MySQL, it's documented at https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html

like image 50
neuhaus Avatar answered Sep 30 '22 11:09

neuhaus


The following example will explain your problem. I am using MySQL 5.7.18.

Firstly I have described the structure of users table as I am going to create posts table with FOREIGN KEY.

Later I created posts table and it has a DATE field named created with many other columns.

Finally I inserted 1 row in the newly created table.

mysql> desc users;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| id          | bigint(20)  | NO   | PRI | NULL    |       |
| fname       | varchar(50) | NO   |     | NULL    |       |
| lname       | varchar(50) | NO   |     | NULL    |       |
| uname       | varchar(20) | NO   |     | NULL    |       |
| email       | text        | NO   |     | NULL    |       |
| contact     | bigint(12)  | NO   |     | NULL    |       |
| profile_pic | text        | NO   |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

mysql> CREATE TABLE  posts(id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, title text NOT NULL, description text NOT NULL, posted_by bigint, FOREIGN KEY(posted_by) REFERENCES users(id) ON DELETE CASCADE ON UPDATE RESTRICT , created DATE);
Query OK, 0 rows affected (0.01 sec)

mysql> desc posts;                                                                                                                                                          
+-------------+------------+------+-----+---------+----------------+
| Field       | Type       | Null | Key | Default | Extra          |
+-------------+------------+------+-----+---------+----------------+
| id          | bigint(20) | NO   | PRI | NULL    | auto_increment |
| title       | text       | NO   |     | NULL    |                |
| description | text       | NO   |     | NULL    |                |
| posted_by   | bigint(20) | YES  | MUL | NULL    |                |
| created     | date       | YES  |     | NULL    |                |
+-------------+------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)

mysql> INSERT INTO posts(title, description, posted_by, created) values("Getting started with MySQL", "Excellent Database system", 1, "2017-05-26");
Query OK, 1 row affected (0.00 sec)

mysql> select * from posts;
+----+----------------------------+---------------------------+-----------+------------+
| id | title                      | description               | posted_by | created    |
+----+----------------------------+---------------------------+-----------+------------+
|  1 | Getting started with MySQL | Excellent Database system |         1 | 2017-05-26 |
+----+----------------------------+---------------------------+-----------+------------+
1 row in set (0.00 sec)

mysql> 
like image 27
hygull Avatar answered Sep 30 '22 13:09

hygull