MySQL - DATETIME
В таблице столбец в DATETIME
Пытаюсь получить записи за сегодняшнею дату, но не выходит. Ошибку не выдает. В PHP это вроде так работало. var d = new Date(); var god = moment(d).format('YYYY'); .... SELECT count(id) as allzv FROM `sip_http` WHERE time = year(`time`) = '+god+' AND month(`time`) = '+mes+' AND day(`time`) = '+day+' AND label = "v"; |
Не понимаю при записи формата DATETIME или DATE
пишет в формате 2016-11-14T10:15:12.000Z Пытаюсь и через явную запись 2016-11-14 и через NOW() |
Цитата:
В MySQL DATETIME, это YYYY-mm-dd HH:MM:SS WHERE `time` = NOW() - выборка по текущей дате, вот только time, это зарезервировано за MySQL и должно в запросах обрамляться обратными кавычками. |
Rise,
вы на его код гляньте и на его контекст. И это что такое moment(d).format('YYYY')? Есть в интерфейсе DateTimeInterface метод format(), но либо ::format(), либо ->format(), либо процедурный date_format(). Что-то не пахнет классами из написанного автором, есть не понятно что в стиле JS. И лучше использовать public вместо var, если уж говорить о классах. |
Разобрался! Все работает!
Оказалось даты не совпадали в Linux и MYSQL - вот и выборка не работала Все что надо было сделать это перегрузить "мускул" /etc/init.d/mysql restart По вашим комментариям - "moment" - Это хорошая библиотека форматирования дат и времени - рекомендую! http://momentjs.com/ А еще главное - внес запись в подключение "dateStrings: true": var connection = mysql.createConnection({ host : '----------', port : '----------', user : '----------', password : '********', database : '----------', dateStrings: true }); |
Цитата:
|
Цитата:
|
Цитата:
В PHP это вроде так работало. var d = new Date(); .... то есть контекст с кодом никак не вяжутся, читаешь и ни хрена не понимаешь что пишут. ) А "не то время в MySQL" это известная проблема, можно корректировать его под локальное сервера SET time_zone = 'смещение часового пояса'. Будет этого мало придется немного попотеть. ) |
Похожий вопрос, но в nodejs.
Есть столбец в MYSQL формата date. Обновляется он без проблем, например: connection.query("UPDATE `master_devices` SET `UpDate` =('"+ year +"' '-' '"+ month +"' '-' '"+ date +"') WHERE `master_devices`.`Master_ID` ='"+ tempdata[1] +"';");//обновить дату А вот вставлять таблицу с заполнением этого столбца - ну никак! Уже пробовал и STR_TO_DATE и двойные кавычки - нифига:-E connection.query("INSERT INTO `master_log`(Customer_ID, Master_ID, UpDate) VALUES ('"+ Customer_ID +"','"+ tempdata[1] +"','2016-11-11');"); |
Лишнее зачем в запросах писать? Если данные обработаны перед записью, то
connection.query("UPDATE master_devices SET `UpDate` = '"+ year +"-"+ month +"-"+ date +"') WHERE Master_ID = '"+ tempdata[1] +"'"); `UpDate` - потому, что это зарезервировано за MySQL. Если Master_ID и Customer_ID это числа, то заключать их в кавычки не требуется WHERE Master_ID = "+ tempdata[1]); connection.query("INSERT INTO master_log (Customer_ID, Master_ID, `UpDate`) VALUES ("+ Customer_ID +", "+ tempdata[1] +", '2016-11-11')"); То есть в запросе на вставку будет конфликт с именем поля UpDate если это имя не обрамлено в обратные кавычки, регистр для MySQL не важен. Ошибки нужно анализировать. Если вставка/обновление (или только обновление) записи должна производится по текущей дате, то указывать дату в запросах нет необходимости. Полю типа TIMESTAMP можно задать атрибут on update CURRENT_TIMESTAMP и значение по умолчанию CURRENT_TIMESTAMP. |
Часовой пояс GMT +3, время: 01:18. |