База данных: Дата
-
Ну я вот только что всё проверил.
Тестовый проект
-
@Fox это мистика какая-то. Код работает, и у тебя и у меня в проектах. Но если DATE_BORN брать из базы, то возвращает null
-
У тебя в базе дата в каком виде? Если взять дату количеством миллисекунд, прошедших с 01.01.1970, командой
+new Date()
то из переменной работает.
Тот же тестовый проект
-
@Fox там точно тип данных date. Единственное, что я внес его копипастом. На вид тоже самое.
-
@Fox кароче, теперь вопрос стоит не как вычесть дату, а как правильно вычесть дату из таблицы. Потому что та дата, которая получается выражением, и та дата, которая берется из таблицы - какие то разные даты.
-
В учебнике пишут вот так.
var msUTC = Date.parse('2012-01-26T13:51:50.417Z');
Вобщем, такая вот фигня. Похоже, что я чего-то не знаю.
-
Решил вот так. Две колонки типа int
Получаю целое число дней
[[DATE_BORN]] = new Date ()
[[DATE_BORN]] = [[DATE_BORN]] - 0 #придумал такой ход, чтобы извлечь кол-во миллисекунд
[[DATE_BORN]] = [[DATE_BORN]]/(10006060*24) # получаю кол-во дней
[[DATE_BORN]] = Math.floor([[DATE_BORN]]) # превращаю в целое
потом прописываю в базу действием изменить запись если та равна нулюполучаю текущую дату
[[DATE]] = new Date ()
[[DATE]] = [[DATE]] - 0
[[DATE]] = [[DATE]]/(1000 60 60 24) #почему то значки умножения не ставятся
[[DATE]] = Math.floor([[DATE]])[[N]] = [[DATE]]-[[DATE_BORN]] #Узнаю, сколько дней прошло
Может, кому пригодится.
-
@Viktor Чтобы поменять время в базе нужно записать туда целое число, которое равно количеству миллисекунд с 1 января 1970 года.
Вот примеры.
Date.now() //Текущая дата Date.now() + 1000 * 60 * 5 //Текущая дата + 5 минут
-
@support ага, понял.
-
@support Запись даты в базу в unixtime формате это хорошо, но почему бы не возвращать в этом же формате при чтении?
Как вообще получить дату из базы в нормальный вид типа UnixTime или Date()?Даты при парсинге строки из базы в виде ресурса, возвращаются в формате строки "2017-10-13T22:18:20".
Проверил в консоле обычного браузера преобразуется в дату как надо командной:var date = new Date("2017-10-13T22:18:20");
Но тот же самый код отказывается работать в BAS'е:
0_1507926157785_test.xml
-
@Geograph said in База данных: Дата:
@support Запись даты в базу в unixtime формате это хорошо, но почему бы не возвращать в этом же формате при чтении?
Как вообще получить дату из базы в нормальный вид типа UnixTime или Date()?Даты при парсинге строки из базы в виде ресурса, возвращаются в формате строки "2017-10-13T22:18:20".
Проверил в консоле обычного браузера преобразуется в дату как надо командной:var date = new Date("2017-10-13T22:18:20");
Но тот же самый код отказывается работать в BAS'е:
0_1507926157785_test.xmlДумаю, как временное решение, можно пока переводить дату в UnixTime через команду "Браузер -> Яваскрипт" там выполняется нормально.
new Date([[DATE_FROM_BASE]]).getTime()
Либо отказаться от типа данных в БД "Date" в пользу "Int", но просматривать базу будет неудобно
-
Поправочка браузерный яваскрипт еще и часовой пояс не учитывает, поэтому код должен быть:
new Date([[DATE_FROM_BASE]]).getTime() + new Date([[DATE_FROM_BASE]]).getTimezoneOffset()*60*1000
-
@Geograph Исправил, теперь колонка с датой возвращается как целое число.
Также теперь есть нода и можно использовать moment.js