如何从 SQL 中的日期时间中删除时间
Posted
技术标签:
【中文标题】如何从 SQL 中的日期时间中删除时间【英文标题】:How to remove time from datetime in SQL 【发布时间】:2019-07-05 23:40:03 【问题描述】:这是我的查询:
select date(datetime) as dates,
user_id,
sum(CASE When status='completed' Then 1 Else 0 End ) as completed,
sum(CASE When status='incompleted' Then 1 Else 0 End ) as incompleted,
sum(CASE When status!='' Then 1 Else 0 End ) as total
from routine_streak
where user_id ='"+user_id+"'
and datetime between '"+start+"' and '"+end+"'
group by user_id,date(datetime)
它会给出这样的输出:
"datetime": "2019-01-30T00:00:00.000Z
不过我想要这样:
"datetime": "2019-01-30"
【问题讨论】:
psql(团队 sql) 那个查询不会给你任何东西,它有一个语法错误 您在问题中发布的查询在多种情况下均无效(date(datetime)
后面的冒号不得存在,末尾的括号应删除)
能否请您在此查询中告诉我如何使用 join 从 user_id 获取用户名
学习使用参数!
【参考方案1】:
使用下面给出的查询
<?php
var str = "select DATE_FORMAT(datetime,'%y-%m-%d') as dates,from routine_streak where user_id='183' group by user_id)";
?>
【讨论】:
不工作它在我的 api 响应中显示内部服务器错误 nidhi,提供的语法是 mysql 请告诉我们您使用的是哪个数据库? 我在节点 js 中使用 psql 查询【参考方案2】:请尝试。
SELECT
date_format(datetime, '%Y-%m-%d') AS dates,
user_id,
sum(CASE WHEN status = 'completed'
THEN 1
ELSE 0 END) AS completed,
sum(CASE WHEN status = 'incompleted'
THEN 1
ELSE 0 END) AS incompleted,
sum(CASE WHEN status != ''
THEN 1
ELSE 0 END) AS total
FROM routine_streak
WHERE user_id = '"+user_id+"'
AND datetime BETWEEN '"+start+"' AND '"+end+"'
GROUP BY user_id, dates
参考https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
【讨论】:
【参考方案3】:使用 cast 函数仅获取日期部分
cast(datetime as date)
【讨论】:
【参考方案4】:这是SQL SERVER
的答案select convert(varchar, getdate(), 111)
输出将符合预期。
【讨论】:
以上是关于如何从 SQL 中的日期时间中删除时间的主要内容,如果未能解决你的问题,请参考以下文章