Какой тип данных следует использовать для сохранения значения unix_timestamp (MySQL)?
Вопрос
Каков тип данных для unix_timestamp (MySQL)?
- dev.mysql.com/doc/refman/5.0/en/datetime. html teemitzitrone 08.11.2010
- Является ли временная метка такой же, как unix_timestamp? jzarsuelo 08.11.2010
- @user239431: UNIX_TIMESTAMP - это функция MySQL: dev.mysql.com/doc/refman/5.1/en/ OMG Ponies 08.11.2010
- @user239431 user239431 нет. unix_timestamp возвращает секунды с '1970-01-01 00:00:00' и (mysql) временную метку числа в формате ГГГГММДДЧЧММСС или ГГММДДЧЧММСС. если вам действительно нужна метка времени (unix) в вашем приложении, вы можете сохранить текущую дату и время с помощью NOW() и вернуть unix_timestap с помощью UNIX_TIMESTAMP() и при этом иметь всю мощь функций даты MySQL, см. dev.mysql.com/doc/refman/5.1/en/date-and-time- functions.html teemitzitrone 08.11.2010
- также стоит прочитать dev. mysql.com/doc/refman/5.1/ru/ teemitzitrone 08.11.2010
Ответы
Ответ 1 · рейтинг 65 · Haim Evgi
тип целочисленный, например:
int(11)
подходит для индексации и таких условий, как > < =
Ответ 2 · рейтинг 17 · OMG Ponies
Вы хотите использовать тип данных TIMESTAMP.
Это хранится как значение эпохи, но MySQL отображает значение как "ГГГГ-ММ-ДД ЧЧ:ММ:СС".
Ответ 3 · рейтинг 4 · Ahmad Zahabi
Тип данных MySql DateTime хранит дату в формате "ГГГГ-ММ-ДД ЧЧ:ММ:СС" в диапазоне от "1000-01-01 00:00:00" до "9999-12-31". 23:59:59'.
Тип данных MySql TIMESTAMP хранит дату в формате "ГГГГ-ММ-ДД ЧЧ:ММ:СС" в диапазоне от "1970-01-01 00:00:01" UTC до "2038-01-". 19 03:14:07' UTC.
Unix TIMESTAMP - это количество секунд, прошедших с 1970-01-01. Если вы хотите сохранить временную метку unix в mysql db, вам следует использовать int(11) с атрибутом UNSIGNED (чтобы разрешить только положительные числа), и если вы хотите сохранить количество микросекунд, которое вы должны использовать bigint(20),..
Если вы хотите получить unixtimestamp в удобочитаемом формате в выбранном запросе, вы можете использовать
SELECT FROM_UNIXTIME(CAST(yourtable.start_time as UNSIGNED)) as date_time
Если вы используете php, вы можете использовать:
$unixtimestamp= time();//1544619186
echo(date("Y-m-d", $unixtimestamp));//2018-12-12
Если вы хотите отображать дату и время с использованием местного часового пояса в Javascript, используйте эту функцию.
function timeConverter(UNIX_timestamp){
var date = new Date(UNIX_timestamp*1000);
var year = date.getFullYear();
var month = ("0"+(date.getMonth()+1)).substr(-2);
var day = ("0"+date.getDate()).substr(-2);
var hour = ("0"+date.getHours()).substr(-2);
var minutes = ("0"+date.getMinutes()).substr(-2);
var seconds = ("0"+date.getSeconds()).substr(-2);
return year+"-"+month+"-"+day+" "+hour+":"+minutes+":"+seconds;
}
console.log(timeConverter(value));// 2018-14-12 13:11:33
(В этом случае сервер должен вернуть unixTimestamp как есть: SELECT yourtable.start_time as date_time)
Ответ 4 · рейтинг -2 · Ramesh Krishnan
BIGINT UNSIGNED NOT NULL
Представление эпохи в секундах может поместиться в INT(11). Если метка времени имеет миллисекунды, INT(11) не работает в MySQL.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Какой тип данных MySQL более эффективен для масштабируемых приложений? ТЕКСТ или ВАРЧАР?
- Типы в общедоступном C++ API
- Как заставить linq использовать sql правильный тип данных для параметров sql?
- Определение собственного TYPE на основе существующего типа
- Как использовать параметры вывода SQL в хранимых процедурах
- Databricks AutoML + SQL = потоковое машинное обучение в Lakehouse!