有没有办法使用RedBean PHP手动设置新bean的DECLARE @startT DATETIME = Cast('19:00:00' AS TIME),
@endT DATETIME = Cast('11:00:00' AS TIME);
DECLARE @result INT = Datediff(mi, @startT, @endT);
DECLARE @t1 DATETIME = Cast('08:00:00' AS TIME),--work
@t2 DATETIME = Cast('10:00:00' AS TIME),--break
@t3 DATETIME = Cast('10:15:00' AS TIME),--w
@t4 DATETIME = Cast('12:40:00' AS TIME),--b
@t5 DATETIME = Cast('13:25:00' AS TIME),--w
@t6 DATETIME = Cast('16:30:00' AS TIME),--b
@t7 DATETIME = Cast('16:45:00' AS TIME),--w
@t8 DATETIME = Cast('18:15:00' AS TIME); --b
IF Datediff(mi, @startT, Cast('18:00:00' AS TIME)) < 0
--I have assumed the employee cannot come before six for the night shift
BEGIN
SET @result = @result + 1440;
IF (( @endT >= @t3 ))
SET @result = @result - Datediff(mi, @t2, @t3)
IF (( @endT >= @t5 ))
SET @result = @result - Datediff(mi, @t4, @t5)
IF (( @endT >= @t7 ))
SET @result = @result - Datediff(mi, @t6, @t7)
END
ELSE
BEGIN
IF ((@startT <= @t2 AND @endT >@t2) AND (@startT < @t3 AND @endT >= @t3))
SET @result = @result - DATEDIFF(mi, @t2, @t3)
IF ((@startT <= @t4 AND @endT >@t4) AND (@startT < @t5 AND @endT >= @t5))
SET @result = @result - DATEDIFF(mi, @t4, @t5)
IF ((@startT <= @t6 AND @endT >@t6) AND (@startT < @t7 AND @endT >= @t7))
SET @result = @result - DATEDIFF(mi, @t6, @t7)
END
SELECT @result
--SELECT RIGHT('0' + CAST((@result / 60) % 60 AS VARCHAR),2) + ':' +
--RIGHT('0' + CAST(@result % 60 AS VARCHAR),2)
?我存储了来自API的缓存数据,该API生成每行的ID
,并且为了简单起见,我只想使用ID
。
我已经阅读了其他线索,只是想创建一个新列(ID
)或其他内容,但我想只使用生成的唯一row_id
作为{ {1}}。
答案 0 :(得分:0)
根据MySQL doc
没有为AUTO_INCREMENT列指定值,因此MySQL 自动分配序列号。你也可以明确地说 为列指定0以生成序列号。如果列是 声明 NOT NULL ,也可以为列分配NULL 生成序列号。当您插入任何其他值时 AUTO_INCREMENT列,该列设置为该值和 序列被重置,以便下一个自动生成的值 从最大的列值顺序跟随。
如果这是真的,在RedBean中你可以做类似
的事情$post = R::dispense('post');
$post->id = 234;
R::store($post);
我没有对此进行测试,因为我将自动增量列设置为整数 默认为0 ,这会自动递增。
答案 1 :(得分:0)
我做了redbean的修改版本,它允许你使用另一个字段作为主键(带自动增量) https://github.com/freelanceniek/redbeanx