选择bigint与adddate之间的两个日期之间的行

时间:2017-10-23 07:45:47

标签: sql sql-server date between

我在MSSQL Server中有一个表,将日期保存为像1503381651490这样的bigInt类型。现在,我想在created_time2017-01-01之间选择2017-03-28行。我该怎么办?

由于

3 个答案:

答案 0 :(得分:1)

首先,您必须将bigint字段转换为Date才能应用过滤器。您可以使用以下转换。

10000000 * 24 * 60 * 60 = 864000000000

SELECT CAST((bigintvalue - 599266080000000000) / 864000000000 AS DATETIME) AS DateTimeConv;

之后,您可以在转换后的日期字段中应用过滤器。 例如

SELECT CAST((created_time - 599266080000000000) / 864000000000 AS DATETIME) AS DateTimeConv
FROM Table1
WHERE DateTimeConv < MaxDateValue
      AND DateTimeConv > MinDateValue;

答案 1 :(得分:0)

正如其他人所建议的那样,您应该以正确的格式存储日期时间。

现在,假设存储的值是UNIX时间戳,您可以将所需的日期范围转换为unix时间戳:

select *
from your_table
where created_time between datediff(minute,'1990-1-1','2017-01-01')
                       and datediff(minute,'1990-1-1','2017-03-28')

答案 2 :(得分:0)

我解决了这个问题:

SELECT  "chdt"."CHANGEID" AS "Change ID",     "chdt"."CREATEDTIME" AS "Created 
Date", "chdt"."TITLE" AS "Title" FROM "ChangeDetails" "chdt"
WHERE  dateadd(s,("chdt"."CREATEDTIME" / 1000),'1970/01/01') >= '2017/10/01' 
AND (dateadd(s,("chdt"."CREATEDTIME" / 1000),'1970/01/01') <= '2017/10/05')