phpшник
30.01.2014 - 17:07
Приветствую! я хочу в БД заносить timestamp ниже 70 года. то есть я в базу заношу юзеров, и мне нужно хранить их дату рождения в timestamp. получается что юзеров старше 44 лет я не смогу занести в БД? есть ли другие варианты? но мне надо именно в этом формате.
killer8080
30.01.2014 - 17:13
Зачем хранить дату рождения в timestamp? Для этого идеально подходит DATE
phpшник
30.01.2014 - 17:18
Цитата (killer8080 @ 30.01.2014 - 17:13) |
Зачем хранить дату рождения в timestamp? Для этого идеально подходит DATE |
так проще вычислять возраст по требованию, то есть мне надо будет вывести людей
возраста между 30 и 45, запрос к базе намного проще получается, чем всех извлекать, потом анализировать
killer8080
30.01.2014 - 17:32
И в чем проблема?
killer8080
30.01.2014 - 17:55
SELECT *
FROM `table`
WHERE
YEAR(`date`) BETWEEN YEAR(NOW()) - 45 AND YEAR(NOW()) - 30
phpшник
30.01.2014 - 18:10
Цитата (killer8080 @ 30.01.2014 - 17:55) |
SELECT * FROM `table` WHERE YEAR(`date`) BETWEEN YEAR(NOW()) - 45 AND YEAR(NOW()) - 30 |
спасибо
! как это я сразу недогадался, буду рефакторить,
killer8080
30.01.2014 - 18:14
phpшник
ну это лишь как пример, если по полю дат есть индекс, то запрос нужно строить без расчета значения поля, иначе индексы работать не будут.
killer8080
30.01.2014 - 18:17
типа такого
WHERE
`date` BETWEEN CONCAT(YEAR(NOW()) - 45, '-01-01') AND CONCAT(YEAR(NOW()) - 30, '-12-31')
phpшник
30.01.2014 - 18:23
Цитата (killer8080 @ 30.01.2014 - 18:17) |
типа такого
WHERE `date` BETWEEN CONCAT(YEAR(NOW()) - 45, '-01-01') AND CONCAT(YEAR(NOW()) - 30, '-12-31') |
Спасибо! я понял что это пример!
zelenin
31.01.2014 - 02:26
а в чем проблема заносить timestamp ранее 1970 года?
bestxp
31.01.2014 - 07:35
Цитата (zelenin @ 31.01.2014 - 02:26) |
а в чем проблема заносить timestamp ранее 1970 года? |
ну наверно потому что у автора unixtimestamp дальше догадаешься?)
linker
31.01.2014 - 09:24
Я думаю достаточно
SELECT * FROM `table` WHERE `date` between DATE_SUB(NOW(), INTERVAL 45 YEAR) AND DATE_SUB(NOW(), INTERVAL 30 YEAR)
и оно работает честно, ибо присоединение -01-01 и -12-31 некорректно.
_____________
Gear FrameworkGear Framework на Github
zelenin
31.01.2014 - 10:03
Цитата (bestxp @ 31.01.2014 - 06:35) |
Цитата (zelenin @ 31.01.2014 - 02:26) | а в чем проблема заносить timestamp ранее 1970 года? |
ну наверно потому что у автора unixtimestamp дальше догадаешься?)
|
не догадаюсь. и?
linker
31.01.2014 - 10:07
zeleninUnix timesptamp - это количество секунд прошедших с 1 января 1970 00:00, т.е. для даты 01.01.1970 00:00 unix timestamp равен нулю.
_____________
Gear FrameworkGear Framework на Github
zelenin
31.01.2014 - 10:29
Цитата (linker @ 31.01.2014 - 09:07) |
zelenin Unix timesptamp - это количество секунд прошедших с 1 января 1970 00:00, т.е. для даты 01.01.1970 00:00 unix timestamp равен нулю. |
а для дат ранее чему равен?
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.