Использование ORDER BY на ВЫБОРЕ, ОТЛИЧНОМ в TSQL

вы можете использовать плагин nodemailer для отправки быстрых электронных писем с настройками GMAIL.

Вот ссылка ниже, полный пример приведен.

Nodemailer GAMIL Пример

Пример примера:

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);
  }
});

6
задан OMG Ponies 3 October 2009 в 20:03
поделиться

8 ответов

  SELECT DISTINCT Convert(DATETIME,CONVERT(Varchar(10), GeneratedDate, 101)) 
                     AS GeneratedDate,
        A.GeneratedDate OrderByDate       
  FROM dbo.ProviderProcessGeneratedDate A
  Order By A.GeneratedDate Desc
1
ответ дан 17 December 2019 в 04:53
поделиться

Только добавить к ответам выше...

Можно преобразовать назад для строкового представления за пределами tsql. Просто возвратите тип даты и времени и преобразуйте в формат даты, который Вы хотите в коде (слой дисплея).

1
ответ дан 17 December 2019 в 04:53
поделиться

Причина, которую Ваш первый запрос дал другому распоряжению от того, что Вы хотели...
- Вы используете поле "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)
2
ответ дан 17 December 2019 в 04:53
поделиться

Можно также использовать 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
1
ответ дан 17 December 2019 в 04:53
поделиться

Возможно, просто необходимо ли использовать другой полевой псевдоним так, чтобы он использовал дату упорядочивания, а не отформатированной строки? Т.е.

SELECT DISTINCT CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDateString
FROM dbo.ProviderProcessGeneratedDate
ORDER BY GeneratedDate

Хотя в большинстве случаев необходимо действительно покидать дату как дату и делать любое необходимое форматирование в UI в последний момент, возможном.

0
ответ дан 17 December 2019 в 04:53
поделиться

Я думаю, что можно использовать:

ORDER BY dbo.ProviderProcessGeneratedDate.GeneratedDate

вынудить это использовать значение от исходной таблицы, вместо Вашего нового измененного значения? Вы могли даже добавить псевдоним к ИЗ пункта:

FROM dbo.ProviderProcessGeneratedDate ppgd

Так, чтобы Вы могли использовать псевдоним "ppgd" вместо целого имени таблицы в моем первом операторе.

0
ответ дан 17 December 2019 в 04:53
поделиться

Измените ORDER BY своего исходного оператора для использования поддающейся сортировке строки даты:

SELECT DISTINCT CONVERT(Varchar(10), GeneratedDate, 101) AS GeneratedDate
FROM dbo.ProviderProcessGeneratedDate
ORDER BY CONVERT(Varchar(10), GeneratedDate, 112) 
0
ответ дан 17 December 2019 в 04:53
поделиться

Использовать 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
0
ответ дан 17 December 2019 в 04:53
поделиться