我正在面对一个SQL Server数据库,它包含许多DateTime以本地时间存储的值.(是的,这是不幸的!)我们可能有5到10年的数据,这意味着如果相关区域遵守夏令时,当然还有时间表,这个位置的UTC偏移将根据一年中的时间而变化发生这种变化的情况也可能发生变化,例如它在2007年发生在美国(这些数据大部分起源于此)的情况.
我的目标是DateTime在SQL级别将这些s 转换为UTC时间.如果没有加载整个Olson或TZ数据库并查询它,有没有人有一种技术可以将历史本地时间戳转换为UTC时间?[如果它有帮助,方便的话,我们碰巧也有每行的纬度和经度(可用于识别时区.)
注意:对于实时写入的行DATEDIFF(Hour, Getutcdate(), GETDATE()) AS UtcOffset,当然可以正常工作.问题是将此追溯应用于夏令时"屏障"两侧发生的日期.
所以这很奇怪.如果结果集足够大,RODBC似乎会删除DateTime SQL列的时间部分.(查询是针对SQL Server 2012计算机运行的,是的,当我在SQL Server端运行它们时,无论返回多少行,它们都会生成相同且正确的结果.)
例如,以下工作完美:
myconn <- odbcConnect(dsnName, uid, pwd)
results <- sqlQuery(myconn, "SELECT TOP 100 MyID, MyDateTimeColumn from MyTable ORDER BY MyDateTimeColumn DESC")
close(myconn)
Run Code Online (Sandbox Code Playgroud)
在R中,以下按预期工作:
> results$MyDateTimeColumn[3]
[1] "2013-07-01 00:01:22 PDT"
Run Code Online (Sandbox Code Playgroud)
这是一个有效的POSIXct约会时间.但是,当返回介于10,000到100,000行之间时,突然时间部分消失:
myconn <- odbcConnect(dsnName, uid, pwd)
bigResults <- sqlQuery(myconn, "SELECT TOP 100000 MyID, MyDateTimeColumn from MyTable ORDER BY MyDateTimeColumn DESC")
close(myconn)
Run Code Online (Sandbox Code Playgroud)
(相同的代码,只返回更多的行; 注意:完全相同的行现在已经丢失了它的时间组件),R响应:
> bigResults$MyDateTimeColumn[3]
[1] "2013-07-01 PDT"
Run Code Online (Sandbox Code Playgroud)
请注意,现在缺少时间(这不是一个不同的行;它与前一行完全相同),如下所示:
>strptime(results$TriggerTime[3], "%Y-%m-%d %H:%M:%S")
[1] "2013-07-01 00:01:22"
>strptime(bigResults$TriggerTime[3], …Run Code Online (Sandbox Code Playgroud) 我有一列数据,其中一些是NULL值,我希望从中提取单个第90百分位值:
ColA
-----
NULL
100
200
300
NULL
400
500
600
700
800
900
1000
Run Code Online (Sandbox Code Playgroud)
对于上述,我正在寻找一种技术,当搜索第90百分位数时返回值900,将第80百分位数返回800,等等.类似的函数将是AVG(ColA),其返回550以获得上述数据,或MIN(返回100等的ColA)
有什么建议?
我有一个简单的C#系统托盘应用程序,用于System.Net.WebClient下载多个文件,每个文件的范围为3-15MB.WebClient正在通过HTTPS下载,我控制从中进行下载的服务器.文件通过直接路径从Web浏览器下载得很好,WebClient完全能够处理.DownloadString()来自此服务器的方法(即,将短文本文件下载到字符串).
奇怪的是,在24小时内发生了三件事,我怀疑某种特定于机器的配置或缓存,但我想知道其他人可能知道WebClient的内脏可能会让他们冒险猜测:
WebClient.DownloadFile() 无限期挂起targetFileFullPath已创建,但有0个字节.下载代码的相关部分如下:
using (WebClient client2 = new WebClient())
{
client2.DownloadFile(String.Format("{0}?{1}", thePath, queryParams), targetFileFullPath);
}
Run Code Online (Sandbox Code Playgroud)
我在这个盒子上尝试过通常的sysadmin东西:重新启动它,清除Internet Explorer缓存和临时目录等.
我知道我需要改变处理挂起下载的策略,因为我相信现实世界中会有下载.但是,如果我不明白导致这种特殊故障模式的原因,我不会想到所有的角落情况.任何人都知道发生了什么事,WebClient以便猜测为什么这台机器是"特殊的"?
谢谢!-詹姆士
我正在尝试让 .Net C# 应用程序从注册表项运行Run(位于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,其他字符串值存在并启动一切正常)。但由于某种莫名其妙的原因,我的应用程序的路径无法启动我的应用程序。因此,我决定从命令提示符手动运行该命令,只是为了看看这是否是问题所在。它是。所以现在我真的很困惑:
这是我在发布模式下编译的 .Net 4.0 C# 应用程序。该应用程序位于:
C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe
Run Code Online (Sandbox Code Playgroud)
我可以双击该应用程序并且它可以正常运行。我还可以打开 CMD 窗口并执行以下操作:
cd "C:\Program Files (x86)\MyCompany\MyProduct\"
MyProduct.exe
Run Code Online (Sandbox Code Playgroud)
该应用程序启动得很好。 但是,如果我尝试这样做:
"C:\Program Files (x86)\MyCompany\MyProduct\MyProduct.exe"
Run Code Online (Sandbox Code Playgroud)
应用程序不启动。(!)所以显然注册表项也不起作用。
是否必须采取某种额外步骤才能从完整路径运行 .Net 应用程序?