вы можете использовать плагин nodemailer для отправки быстрых электронных писем с настройками GMAIL.
Вот ссылка ниже, полный пример приведен.
Пример примера:
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'youremail@gmail.com',
pass: 'yourpassword'
}
});
var mailOptions = {
from: 'youremail@gmail.com',
to: 'myfriend@yahoo.com',
subject: 'Sending Email using Node.js',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
SELECT DISTINCT Convert(DATETIME,CONVERT(Varchar(10), GeneratedDate, 101))
AS GeneratedDate,
A.GeneratedDate OrderByDate
FROM dbo.ProviderProcessGeneratedDate A
Order By A.GeneratedDate Desc
Только добавить к ответам выше...
Можно преобразовать назад для строкового представления за пределами tsql. Просто возвратите тип даты и времени и преобразуйте в формат даты, который Вы хотите в коде (слой дисплея).
Причина, которую Ваш первый запрос дал другому распоряжению от того, что Вы хотели...
- Вы используете поле "GeneratedDate" для создания строки
- Вы затем искажаете то поле результата к "GeneratedDate"
- Вы затем заказываете "GeneratedDate", не указывая таблицу
- Таким образом, поле результата используется для упорядочивания
Простая фиксация упоминается в других ответах...
ORDER BY ProviderProcessGeneratedDate.GenerateDate
Путем указывания таблицы нет никакого беспорядка, и Вы получаете результаты, которые Вы хотели.
[в стороне]
Как правило, я всегда снабжаю префиксом свои поля [таблицу]. избегать любой неоднозначности. Тем более, что я часто возвращаюсь позже и добавляю в соединении, вызывая ned для имени таблицы.
Кроме того, я искажаю имена таблиц. Не к вещам как, но чему-то значимому как [Даты]. Это сокращает запрос, но также и позволяет мне изменять таблицу, используемую, не имея необходимость изменять другие ссылки на него в других частях запроса.
[конец в стороне]
Править:
Я оставил свой предыдущий ответ посредством унижения меня. Я действительно должен получить домашний SQL-сервер, таким образом, я могу попробовать свой ответ, прежде чем я отправлю свой ответ... *** Извинения*
Как комментарий указывает, Вы не можете указать что-то в ORDER BY, если это не находится в ОТЛИЧНОМ ВЫБОРЕ.
Поэтому я попробовал бы GROUP BY вместо этого...
SELECT
Convert(DATETIME,CONVERT(Varchar(10), GeneratedDate, 101))
FROM
ProviderProcessGeneratedDate
GROUP BY
GeneratedDate
ORDER BY
GeneratedDate
Это предполагает, что GeneratedDate 1:1 с Вашей формулой ПРЕОБРАЗОВАНИЯ. Если, например, у Вас есть ВРЕМЯ в Ваших полях GeneratedDate, но Ваш Формат даты в ПРЕОБРАЗОВАНИИ не делает; необходимо разделить время от Поля GeneratedDate...
SELECT
Convert(DATETIME,CONVERT(Varchar(10), DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0), 101))
FROM
ProviderProcessGeneratedDate
GROUP BY
DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0)
ORDER BY
DATEADD(DAY, DATEDIFF(DAY, 0, GeneratedDate), 0)
Можно также использовать CTE's при использовании SQL 2005 или 2008.
Ваш код был бы похож:
WITH Dates(GeneratedDate) AS
(
SELECT DISTINCT CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDate
FROM dbo.ProviderProcessGeneratedDate
)
SELECT GeneratedDate FROM Dates ORDER BY GeneratedDate
Возможно, просто необходимо ли использовать другой полевой псевдоним так, чтобы он использовал дату упорядочивания, а не отформатированной строки? Т.е.
SELECT DISTINCT CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDateString
FROM dbo.ProviderProcessGeneratedDate
ORDER BY GeneratedDate
Хотя в большинстве случаев необходимо действительно покидать дату как дату и делать любое необходимое форматирование в UI в последний момент, возможном.
Я думаю, что можно использовать:
ORDER BY dbo.ProviderProcessGeneratedDate.GeneratedDate
вынудить это использовать значение от исходной таблицы, вместо Вашего нового измененного значения? Вы могли даже добавить псевдоним к ИЗ пункта:
FROM dbo.ProviderProcessGeneratedDate ppgd
Так, чтобы Вы могли использовать псевдоним "ppgd" вместо целого имени таблицы в моем первом операторе.
Измените ORDER BY своего исходного оператора для использования поддающейся сортировке строки даты:
SELECT DISTINCT CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDate
FROM dbo.ProviderProcessGeneratedDate
ORDER BY CONVERT(Varchar(10), GeneratedDate, 112)
Использовать GROUP BY
вместо DISTINCT
:
SELECT
CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDate
FROM
dbo.ProviderProcessGeneratedDate AS BaseDates
GROUP BY
BaseDates.GeneratedDate,
CONVERT(Varchar(10), GeneratedDate, 101)
ORDER BY
BaseDates.GeneratedDate