[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: timestamp ниже 70 года
Страницы: 1, 2, 3, 4, 5, 6, 7
phpшник
Приветствую! я хочу в БД заносить timestamp ниже 70 года. то есть я в базу заношу юзеров, и мне нужно хранить их дату рождения в timestamp. получается что юзеров старше 44 лет я не смогу занести в БД? есть ли другие варианты? но мне надо именно в этом формате. huh.gif
killer8080
Зачем хранить дату рождения в timestamp? Для этого идеально подходит DATE
phpшник
Цитата (killer8080 @ 30.01.2014 - 17:13)
Зачем хранить дату рождения в timestamp? Для этого идеально подходит DATE

так проще вычислять возраст по требованию, то есть мне надо будет вывести людей
возраста между 30 и 45, запрос к базе намного проще получается, чем всех извлекать, потом анализировать
killer8080
И в чем проблема? blink.gif
killer8080
SELECT * 
FROM `table`
WHERE
YEAR(`date`) BETWEEN YEAR(NOW()) - 45 AND YEAR(NOW()) - 30

phpшник
Цитата (killer8080 @ 30.01.2014 - 17:55)
SELECT * 
FROM `table`
WHERE
YEAR(`date`) BETWEEN YEAR(NOW()) - 45 AND YEAR(NOW()) - 30

спасибо rolleyes.gif ! как это я сразу недогадался, буду рефакторить,
killer8080
phpшник
ну это лишь как пример, если по полю дат есть индекс, то запрос нужно строить без расчета значения поля, иначе индексы работать не будут.
killer8080
типа такого
WHERE 
`date` BETWEEN CONCAT(YEAR(NOW()) - 45, '-01-01') AND CONCAT(YEAR(NOW()) - 30, '-12-31')
phpшник
Цитата (killer8080 @ 30.01.2014 - 18:17)
типа такого
WHERE 
`date` BETWEEN CONCAT(YEAR(NOW()) - 45, '-01-01') AND CONCAT(YEAR(NOW()) - 30, '-12-31')

Спасибо! я понял что это пример!
zelenin
а в чем проблема заносить timestamp ранее 1970 года?
bestxp
Цитата (zelenin @ 31.01.2014 - 02:26)
а в чем проблема заносить timestamp ранее 1970 года?

ну наверно потому что у автора unixtimestamp дальше догадаешься?)
linker
Я думаю достаточно
SELECT * FROM `table` WHERE `date` between DATE_SUB(NOW(), INTERVAL 45 YEAR) AND DATE_SUB(NOW(), INTERVAL 30 YEAR)

и оно работает честно, ибо присоединение -01-01 и -12-31 некорректно.

_____________
Gear Framework
Gear Framework на Github
zelenin
Цитата (bestxp @ 31.01.2014 - 06:35)
Цитата (zelenin @ 31.01.2014 - 02:26)
а в чем проблема заносить timestamp ранее 1970 года?

ну наверно потому что у автора unixtimestamp дальше догадаешься?)

не догадаюсь. и?
linker
zelenin
Unix timesptamp - это количество секунд прошедших с 1 января 1970 00:00, т.е. для даты 01.01.1970 00:00 unix timestamp равен нулю.

_____________
Gear Framework
Gear Framework на Github
zelenin
Цитата (linker @ 31.01.2014 - 09:07)
zelenin
Unix timesptamp - это количество секунд прошедших с 1 января 1970 00:00, т.е. для даты 01.01.1970 00:00 unix timestamp равен нулю.

а для дат ранее чему равен?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.