我需要帮助。普适数据库存储日期(以天为单位)。例如,719311是从1970年1月1日到5月28日的天数。因此,当查看719311时,1970年5月28是以普及表示的日期。
发布于 2017-02-24 00:47:58
select datediff(day,'0001-01-01','1753-01-01') + 2
select 719311 - 639907 -- sql
select dateadd(day,79404,'1753-01-01') dateadd()函数不能使用早于'1753-01-01‘的日期,因此需要719311天减去639907天。不同之处在于,您可以插入dateadd()函数。
你应该得到这个1970-05-28 00:00:00.000
发布于 2017-02-24 01:26:13
为此,您可以使用SQL Servers的dateadd功能。但是,Pervasive中的值太大,无法添加到基准日期0 (1900-01-01)中。
为了解决这个问题,我使用了提供的已知整数/日期,并计算了0001-01-01和1900-01-01之间的增量为693597。该值是静态的,可以从每个普及值中减去该值并在dateadd中使用。然后可以将结果添加到1900-01-01。
-- GET BASE DATE OF 0
SELECT CONVERT(DATETIME,0)
-- CALCULATE DIFF FROM 0 TO A KNOWN DATE...
SELECT DATEDIFF(DD,0,'1970-05-28')
--SUBTRACT ABOVE DIFF FROM KNOWN INTEGER FOR SAID DATE... THIS IS OUR DELTA
SELECT 719311-25714
-- ADD THE INTEGER OF SAID DATE, MINUS THE ABOVE DELTA TO 0 TO CONFIRM WE GET THE KNOWN DATE.
SELECT DATEADD(DD,719311-693597,0)
-- USING VARIABLES, LEAVE @DELTA AS A STATIC VALUE, JUST UPDATE @PERVASIVE
DECLARE @PERVASIVE INT, @DELTA INT
SET @PERVASIVE=719312
SET @DELTA=693597
SELECT DATEADD(DD,@PERVASIVE-@DELTA,0)发布于 2017-02-24 01:42:21
另一种选择是将days添加到date数据类型。
当我将719311天数添加到'0001-01-01'时,我让'1970-05-30'获取'1970-05-28',我必须删除其中的2天。
select dateadd(day,719311-2,convert(date,'00010101'))返回'1970-05-28'
https://stackoverflow.com/questions/42421354
复制相似问题