小编Der*_*rek的帖子

如果我从未提交过,我是否需要调用回滚?

我没有使用自动提交连接到SQL Server.如果一切顺利,我会调用commit.否则,我就退出.我是否需要显式调用回滚,否则在我们关闭连接而不提交时会自动回滚?

如果它很重要,我正在SAS中的proc sql中执行SQL命令.

更新:如果没有调用回滚,看起来SAS可能会在proc sql块的末尾自动调用commit.所以在这种情况下,回滚不仅仅是好的做法; 这是必要的.

最后更新:我们最终切换到一个新系统,在我看来,这与我们之前的系统相反.在结束事务而不指定提交或回滚时,它将回滚.因此,下面给出的建议绝对正确:始终显式提交或回滚.

sql sql-server transactions sas

18
推荐指数
1
解决办法
4364
查看次数

如何在C中使用Windows上的GMT获取time_t

我正在编写一些将在多个互通系统上运行的代码.我使用time()来获取time_t,但这导致了系统之间时区差异的问题,所以我想在GMT中得到time_t.我一直在查看time.h函数,但我不清楚如何确定我能得到正确的时间.这是我到目前为止所提出的:

time_t t = time();
struct tm *gtm = gmtime(&t);
time_t gt = mktime(gtm);
Run Code Online (Sandbox Code Playgroud)

现在,这似乎在我的机器上得到了正确的答案,但我想知道它是否会在推出之前普遍适用,即使其他机器的时钟设置为当地时间或GMT或不同的时区或任何其他.我担心的原因是因为mktime.在描述中,它表示它将tm结构解释为"以本地时间表示的日历时间".听起来我觉得它不会返回GMT时间,虽然它似乎在我的机器上.此外,当我打印出gt时,它比t早4个小时,这似乎是正确的.但如果我运行以下内容:

time_t t = time();
struct tm *gtm = gmtime(&t);
struct tm *ltm = localtime(&t);
printf("%d, %d\n", gtm->tm_hour, ltm->tm_hour);
Run Code Online (Sandbox Code Playgroud)

时间是相同的,是当地时间,这不是我的预期.

为了记录,在另一个答案中,我看到了timegm()的引用,听起来很完美,但它在我的系统中不存在.

那么简而言之,如何在C中的任何Windows机器上获得GMT中的time_t?

编辑:删除已添加的msvcrt标记,因为我没有使用msvcrt.

c time time-t gmt

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

gmt ×1

sas ×1

sql ×1

sql-server ×1

time ×1

time-t ×1

transactions ×1