2

I'm trying to migrate data from old_table to new_table, but in old table the date datatype is datetime and in new table the date datatype is int and is accepting timestamp value.

So how to convert the old date in sql query so that it get inserted in new table as timestamp?

INSERT INTO `new_table` (`id`, `user_id`, `doctor_id`, `message_id`, `type`, `is_message`, `is_note`, `doctor_initials`, `call_status`, `message`, `date_created`, `date_updated`, `day`)
  SELECT id, usid, drid, message_id, type, is_message, is_note, doctor, kall, message, datein, 123, ziua
  FROM `old_table`;

I want a function which convert old date to value to timestamp e.g in the above query CONVERT_INTO_TIMESTAMP(datein)

Any help will be highly appreciated.

New Table date_created field accepts values in unix timestamp such as : 1540642765

Thanks

5 Answers 5

13

The function you are looking for is UNIX_TIMESTAMP(), e.g.

select UNIX_TIMESTAMP('1970-01-01 00:00:00');

gives 0 in the UTC timezone.

Sign up to request clarification or add additional context in comments.

Comments

3

Try UNIX_TIMESTAMP() function:

INSERT INTO `new_table`
            (`id`,
             `user_id`,
             `doctor_id`,
             `message_id`,
             `type`,
             `is_message`,
             `is_note`,
             `doctor_initials`,
             `call_status`,
             `message`,
             `date_created`,
             `date_updated`,
             `day`)
SELECT id,
       usid,
       drid,
       message_id,
       type,
       is_message,
       is_note,
       doctor,
       kall,
       message,
       Unix_timestamp(datein),
       '123',
       ziua
FROM   `old_table`;  

From Docs:

If called with no argument, returns a Unix timestamp (seconds since '1970-01-01 00:00:00' UTC) as an unsigned integer. If UNIX_TIMESTAMP() is called with a date argument, it returns the value of the argument as seconds since '1970-01-01 00:00:00' UTC. The date argument may be a DATE, DATETIME, or TIMESTAMP string, or a number in YYMMDD, YYMMDDHHMMSS, YYYYMMDD, or YYYYMMDDHHMMSS format. The server interprets date as a value in the current time zone and converts it to an internal value in UTC.

Comments

0
SELECT date_part('epoch', CURRENT_TIMESTAMP)::int;

Comments

0

since this question is also tagged for SQL people who came here for timestamp solution in SQL/MSSQL Query. can try below

SELECT CAST(DueDate AS TIMESTAMP) "NewDueDate" 

where DueDate is column with having date like - YYYY-MM-DD HH:ii:ss . if your column is in type varchar then still above syntax will work fine.

Comments

0

For SQL Server

DateTime To TimeStamp

SELECT DATEDIFF(SECOND,'1970-01-01',GETUTCDATE());

TimeStamp To DateTime

SELECT DATEADD(SECOND, 1722504427,'1970-01-01');

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.