将日期时间更改为日期并获取数据

时间:2013-12-15 19:23:06

标签: sql sql-server-2012

我有一个表格,其中文件上传时间存储为datetime变量,其值很大,如2013-12-15 22:30:00.030。

如何使用(不包括时间)获取在两个日期之间上传的记录数据。 因为如果我使用下面的命令我会收到错误

select * from story where DateCreated ='2013-12-15'(not working)
select * from story where DateCreated ='2013-12-15 22:30:00.030' (working but I don't want to specify time)

我想要一个像这样的查询:

select * from story where DateCreated ='2013-12-15'

5 个答案:

答案 0 :(得分:0)

如果您需要获取指定日期的记录,它将对您有所帮助:

`select * from story where DateCreated>=DATE('2013-12-15 22:30:00.030') and DateCreated<DATE_ADD(DATE('2013-12-15 22:30:00.030'), INTERVAL 1 DAY)`

答案 1 :(得分:0)

检查数据库实现是否有将日期/时间组合转换为日期的内容。例如在MySQL中,你可以做到

select * from story where date(DateCreated) ='2013-12-15'

答案 2 :(得分:0)

如果只想查询日期时间列的日期部分,可以将列强制转换为在选择中键入日期:

select * from story where CAST(DateCreated As Date) ='2013-12-15'

答案 3 :(得分:0)

这将检查文件是否按特定时间间隔上传,例如2013年12月15日:

select * from story
WHERE DateCreated >= CAST('20131215' AS DATETIME)
AND   DateCreated < DATEADD(DAY, 1, CAST('20131215' AS DATETIME))

答案 4 :(得分:0)

日期函数通常不利用索引(如其他答案中所指出的那样),所以像下面这样的东西会更好。

而不是:

SELECT * 
FROM   story 
WHERE  datecreated = '2013-12-15' 

使用:

SELECT * 
FROM   story 
WHERE  datecreated >= '2013-12-15' 
       AND datecreated < '2013-12-16'