sql加入查询日期格式
sql join query date format
我正在努力table查看(在 grafana 中)我的交易利润,我按日期对交易进行分组。
SELECT
close_date AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND c2.close_date = close_date) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND c2.close_date = close_date) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE c2.close_date = close_date) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE c2.close_date = close_date) AS "Profit"
FROM trades c2 WHERE close_date IS NOT NULL GROUP BY close_date
这将创建 table 交易列表,但不会按日期对交易进行分组,因为原始“close_date”的格式为“2021-09-20 11:11:12.954078 +0000 协调世界时。
如何设置 close_date 的格式以便只有日期 (2021-09-20) 并在连接查询中使用它?
我试过这个:
SELECT
date(close_date) AS "Date",
.....
这将 close_date 更改为我想要的日期,但分组将不起作用。
我试图将每个 close_date 更改为 date(close_date) 但随后整个语法中断。
SELECT
date(close_date) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND c2.date(close_date) = date(close_date)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND c2.date(close_date) = date(close_date)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE c2.date(close_date) = date(close_date)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE c2.date(close_date) = date(close_date)) AS "Profit"
FROM trades c2 WHERE date(close_date) IS NOT NULL GROUP BY date(close_date)
问题是:
c2.date(close_date)
如何格式化此处的日期时间?
c2.close_date (2021-09-20 11:11:12.954078 +0000 UTC) ->
c2.date(close_date) (2021-09-20) ??
感谢您的帮助。我在任何方面都不是 sql 专家,所以我的术语可能“有点不对劲”。
您可以使用 CAST() & CONVERT() 函数
转换日期
阅读有关此功能的更多信息CONVERT() & CAST()
SELECT CONVERT(varchar(10),'2021-09-20 11:11:12.954078 +0000 UTC',105) AS [Date]
请参考此代码
SELECT
CONVERT(varchar(10),close_date,105) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS "Profit"
FROM trades c2
WHERE CONVERT(varchar(10),close_date,105) IS NOT NULL
GROUP BY CONVERT(varchar(10),close_date,105)
我能够让它工作。
SELECT
date(close_date) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND date(c2.close_date) = date(close_date)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND date(c2.close_date) = date(close_date)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE date(c2.close_date) = date(close_date)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE date(c2.close_date) = date(close_date)) AS "Profit"
FROM trades c2 WHERE date(close_date) IS NOT NULL GROUP BY date(close_date)
我正在努力table查看(在 grafana 中)我的交易利润,我按日期对交易进行分组。
SELECT
close_date AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND c2.close_date = close_date) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND c2.close_date = close_date) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE c2.close_date = close_date) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE c2.close_date = close_date) AS "Profit"
FROM trades c2 WHERE close_date IS NOT NULL GROUP BY close_date
这将创建 table 交易列表,但不会按日期对交易进行分组,因为原始“close_date”的格式为“2021-09-20 11:11:12.954078 +0000 协调世界时。
如何设置 close_date 的格式以便只有日期 (2021-09-20) 并在连接查询中使用它? 我试过这个:
SELECT
date(close_date) AS "Date",
.....
这将 close_date 更改为我想要的日期,但分组将不起作用。
我试图将每个 close_date 更改为 date(close_date) 但随后整个语法中断。
SELECT
date(close_date) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND c2.date(close_date) = date(close_date)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND c2.date(close_date) = date(close_date)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE c2.date(close_date) = date(close_date)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE c2.date(close_date) = date(close_date)) AS "Profit"
FROM trades c2 WHERE date(close_date) IS NOT NULL GROUP BY date(close_date)
问题是:
c2.date(close_date)
如何格式化此处的日期时间?
c2.close_date (2021-09-20 11:11:12.954078 +0000 UTC) -> c2.date(close_date) (2021-09-20) ??
感谢您的帮助。我在任何方面都不是 sql 专家,所以我的术语可能“有点不对劲”。
您可以使用 CAST() & CONVERT() 函数
转换日期阅读有关此功能的更多信息CONVERT() & CAST()
SELECT CONVERT(varchar(10),'2021-09-20 11:11:12.954078 +0000 UTC',105) AS [Date]
请参考此代码
SELECT
CONVERT(varchar(10),close_date,105) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE CONVERT(varchar(10),c2.close_date,105) = CONVERT(varchar(10),close_date,105)) AS "Profit"
FROM trades c2
WHERE CONVERT(varchar(10),close_date,105) IS NOT NULL
GROUP BY CONVERT(varchar(10),close_date,105)
我能够让它工作。
SELECT
date(close_date) AS "Date",
(SELECT COUNT(*) FROM trades WHERE close_profit > 0 AND date(c2.close_date) = date(close_date)) AS Wins,
(SELECT COUNT(*) FROM trades WHERE close_profit < 0 AND date(c2.close_date) = date(close_date)) AS Losses,
(SELECT AVG(close_profit * 100) FROM trades WHERE date(c2.close_date) = date(close_date)) AS "Avg",
(SELECT SUM(close_profit_abs) FROM trades WHERE date(c2.close_date) = date(close_date)) AS "Profit"
FROM trades c2 WHERE date(close_date) IS NOT NULL GROUP BY date(close_date)