Select bigint 与 adddate 之间的两个日期之间的行
Select rows between two date that bigint with adddate
我在 MSSQL Server 中有一个 table 将日期保存为 bigInt 类型,如 1503381651490
。现在我想要 select 行 created_time
在 2017-01-01
到 2017-03-28
之间。我该怎么办?
谢谢
正如其他人所建议的,您应该以正确的格式存储日期时间。
现在,假设存储的值是 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')
首先,您必须将 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;
我用这个解决了问题:
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')
我在 MSSQL Server 中有一个 table 将日期保存为 bigInt 类型,如 1503381651490
。现在我想要 select 行 created_time
在 2017-01-01
到 2017-03-28
之间。我该怎么办?
谢谢
正如其他人所建议的,您应该以正确的格式存储日期时间。
现在,假设存储的值是 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')
首先,您必须将 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;
我用这个解决了问题:
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')