Sql 将Unix时间戳II转换为YYYYMMDD

Sql 将Unix时间戳II转换为YYYYMMDD,sql,sql-server,Sql,Sql Server,我有一个SQL查询,它将数据库中的日期/时间戳列从UNIX时间戳转换为可读格式。这给了我一个很好的可读格式,但我想去掉实际的时间戳,只保留日期。。因为我只想对所有发生的日期进行计数和分组 SELECT DATEADD(ss,msg.timestamp/1000,'01/01/1970')As DateTime FROM dbo.cp_messages msg 当前的结果如下所示: 2005-10-26 11:12:36.000 但我想: 2005-10-26 我该如何减少时间 这些注释很有

我有一个SQL查询,它将数据库中的日期/时间戳列从UNIX时间戳转换为可读格式。这给了我一个很好的可读格式,但我想去掉实际的时间戳,只保留日期。。因为我只想对所有发生的日期进行计数和分组

SELECT DATEADD(ss,msg.timestamp/1000,'01/01/1970')As DateTime
FROM dbo.cp_messages msg
当前的结果如下所示:

2005-10-26 11:12:36.000
但我想:

2005-10-26
我该如何减少时间

这些注释很有帮助,但是既然我已经将unix时间转换为正确的格式,我该如何在日期之间进行搜索。。我试过下面的方法,但每次都会出错

SELECT COUNT(msg.messageId)
,CONVERT(VARCHAR(10), DATEADD(ss, msg.[timestamp]/1000, '01/01/1970'), 120) 
FROM dbo.cp_messages msg
WHERE timestamp >= DATEADD(DAY, -2, GETDATE()) 
GROUP BY timestamp
我似乎每一个例子都有一个计数,但我想要的是那天的总计数

乙二醇

我什么时候愿意

3   2015-10-29

不确定如何获得所需的结果

仅显示日期,您可以使用以下内容:

select convert(nvarchar(10), [DateTime], 120)
或者,返回一天的开始,您可以使用

select dateadd(day, datediff(day, 0, [DateTime]) - 10, 0))

问题的第二部分:

它为3行中的每一行提供了一个单独的行,因为您仍在按基础日期分组。因此,您可以为每个日期获得一个具有不同基本时间的组。但是,您只显示一天的前半部分,这就是为什么您无法看到这一点

相反,在一天开始时分组:

SELECT COUNT(msg.messageId) as messageId
      ,CONVERT(VARCHAR(10), dateadd(day, datediff(day, 0, timestamp), 0), 120) as timestamp
FROM dbo.cp_messages msg
WHERE timestamp >= DATEADD(DAY, -2, GETDATE()) 
GROUP BY dateadd(day, datediff(day, 0, timestamp), 0)

您可以使用映射函数将unix时间戳转换为实际时间戳,如下所示:

from datetime import datetime
df3['creationdate'] = df3['createDate'].map(lambda d: datetime.fromtimestamp(int(d)))
df3.drop('createDate', axis=1, inplace=True) 
df3.head(7)
您可以稍后确认新转换的日期时间是否为实际的python日期格式


可能重复的答案除了答案外,如果没有在YYYY-MM-DD表格中指定,请注意日期格式,因为1970年1月10日可以是10月1日或1月10日!查看SET DATEFORMAT DMY,在导入数据之前强制使用日期格式。Brillant这正是我想要的。你能解释一下(Varchar(10)的作用吗?最后是120。既然我已经将mydate转换成了正确的格式,我该如何查找所有几天前的记录。当比较对我来说似乎不起作用时,我最终得到了一个错误,(-10,0)是什么在行尾执行。我得到一个错误,关于msg.timestamp在选择列表中无效,因为它不包含在聚合函数或分组函数中。如果我添加msg.messageID,我将得到一个算术o/fHmm,不完全确定-10来自何处,已将其删除。还更新了select,希望重新添加移动错误。对此表示抱歉-无法测试它,因为您尚未提供任何用于测试的示例数据!算术溢出错误将表达式转换为数据类型datetime-列中的数据只是messageId的ID(数字)和时间的Unix时间戳。在对其执行任何操作之前,请尝试将时间戳转换为datetime。
SELECT COUNT(msg.messageId) as messageId
      ,CONVERT(VARCHAR(10), dateadd(day, datediff(day, 0, timestamp), 0), 120) as timestamp
FROM dbo.cp_messages msg
WHERE timestamp >= DATEADD(DAY, -2, GETDATE()) 
GROUP BY dateadd(day, datediff(day, 0, timestamp), 0)
from datetime import datetime
df3['creationdate'] = df3['createDate'].map(lambda d: datetime.fromtimestamp(int(d)))
df3.drop('createDate', axis=1, inplace=True) 
df3.head(7)