【问题标题】:Remove Time from DateTime values returned in Query从 Query 中返回的 DateTime 值中删除时间
【发布时间】:2013-08-22 14:04:33
【问题描述】:
在你们的帮助下,我有以下 SQL 查询:
SELECT DataLog.TimestampUTC,MeterTags.Name,DataLog.Data
FROM DataLog
INNER JOIN MeterTags
ON DataLog.MeterTagId = MeterTags.MeterTagId
WHERE DataLog.TimeStampUTC between cast(getdate() - 1 as date) and cast(getdate() as date) and
DataLog.MeterTagId Between 416 AND 462;
这将返回一列“TimestampUTC”,其中包含 YYYY-MM-DD hh:mm:ss。我想在此列中删除时间,只显示 YYYY-MM-DD。
您能提供的任何帮助将不胜感激。
提前致谢。
【问题讨论】:
标签:
sql
sql-server-2008
tsql
datetime
【解决方案1】:
SELECT convert(char(10), DataLog.TimestampUTC, 120) as TimestampUTC,
MeterTags.Name,DataLog.Data
FROM DataLog
INNER JOIN MeterTags
ON DataLog.MeterTagId = MeterTags.MeterTagId
WHERE DataLog.TimeStampUTC between cast(getdate() - 1 as date) and cast(getdate() as date) and
DataLog.MeterTagId Between 416 AND 462;
【解决方案2】:
在 SQL Server 中,您可以转换为日期
select Convert(Date, Convert(datetime, '2013/01/01 12:53:45'))
结果:
2013-01-01
【解决方案3】:
你应该使用:
CAST(DataLog.TimestampUTC as date)
代码如下:
SELECT CAST(DataLog.TimestampUTC as date),MeterTags.Name,DataLog.Data
FROM DataLog
INNER JOIN MeterTags
ON DataLog.MeterTagId = MeterTags.MeterTagId
WHERE DataLog.TimeStampUTC between cast(getdate() - 1 as date) and cast(getdate() as date) and
DataLog.MeterTagId Between 416 AND 462;