Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   MySQL - DATETIME (https://javascript.ru/forum/node-js-io-js/65868-mysql-datetime.html)

Olekos 11.11.2016 21:49

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";

Olekos 14.11.2016 13:30

Не понимаю при записи формата DATETIME или DATE
пишет в формате 2016-11-14T10:15:12.000Z

Пытаюсь и через явную запись 2016-11-14 и через NOW()

laimas 14.11.2016 14:10

Цитата:

Сообщение от Olekos
В PHP это вроде так работало.

var d = new Date();
var god = moment(d).format('YYYY');

Нет в РНР ни var, ни всего остального, каким образом оно могло работать?

В MySQL DATETIME, это YYYY-mm-dd HH:MM:SS

WHERE `time` = NOW() - выборка по текущей дате, вот только time, это зарезервировано за MySQL и должно в запросах обрамляться обратными кавычками.

Rise 14.11.2016 14:40

laimas, var есть)

laimas 14.11.2016 15:55

Rise,
вы на его код гляньте и на его контекст. И это что такое moment(d).format('YYYY')? Есть в интерфейсе DateTimeInterface метод format(), но либо ::format(), либо ->format(), либо процедурный date_format().
Что-то не пахнет классами из написанного автором, есть не понятно что в стиле JS.

И лучше использовать public вместо var, если уж говорить о классах.

Olekos 15.11.2016 15:11

Разобрался! Все работает!
Оказалось даты не совпадали в Linux и MYSQL
- вот и выборка не работала

Все что надо было сделать это перегрузить "мускул"
/etc/init.d/mysql restart

По вашим комментариям - "moment" - Это хорошая библиотека форматирования дат и времени - рекомендую!
http://momentjs.com/

А еще главное - внес запись в подключение "dateStrings: true":

var connection = mysql.createConnection({
host : '----------',
port : '----------',
user : '----------',
password : '********',
database : '----------',
dateStrings: true
});

laimas 15.11.2016 16:00

Цитата:

Сообщение от Olekos
По вашим комментариям - "moment" - Это хорошая библиотека форматирования дат и времени - рекомендую!

Ну да, чтобы получить текущую дату средствами РНР, нужно шарахаться по сети выискивая некую чудесную библиотеку, а не использовать единственную готовую функцию date('YYYY')? К тому же в РНР уже есть готовые интерфейсы.

Olekos 15.11.2016 19:31

Цитата:

Сообщение от laimas (Сообщение 435085)
Ну да, чтобы получить текущую дату средствами РНР, нужно шарахаться по сети выискивая некую чудесную библиотеку, а не использовать единственную готовую функцию date('YYYY')? К тому же в РНР уже есть готовые интерфейсы.

А причем тут PHP? Речь шла только JS. Я написал что такой пример у меня работал на PHP - имея в виду MySQL запрос в базу данных. Я не думал что надо указать на чем код на форуме javascript.ru в рубрике node.js.

laimas 16.11.2016 05:04

Цитата:

Сообщение от Olekos
А причем тут PHP?

Потому, что вы пишите

В PHP это вроде так работало.

var d = new Date();
....


то есть контекст с кодом никак не вяжутся, читаешь и ни хрена не понимаешь что пишут. )

А "не то время в MySQL" это известная проблема, можно корректировать его под локальное сервера SET time_zone = 'смещение часового пояса'. Будет этого мало придется немного попотеть. )

-VenoM- 20.11.2016 20:43

Похожий вопрос, но в 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');");


Часовой пояс GMT +3, время: 17:05.