小编lin*_*ski的帖子

将unix epoch时间戳转换为TSQL日期时间

我发现只有一个类似的问题,但对于MySQL.

我正在开发一个Web服务,不得不查询数据库(MS SQL服务器).由于我无法得到正确的结果,我决定通过SQL客户端测试查询.Web服务使用Hibernate访问数据库,所有时间值始终表示为长值(unix纪元时间).为了测试它,我需要将unix时间戳转换为TSQL时间戳.这就是我想出的:

select dateadd(ms,123,'1970-01-01 00:00:00.0');
Run Code Online (Sandbox Code Playgroud)

哪个输出:

1970-01-01 00:00:00.123
Run Code Online (Sandbox Code Playgroud)

但是,我的实际数据有点大

select dateadd(ms,1359016610667 ,'1970-01-01 00:00:00.0');
Run Code Online (Sandbox Code Playgroud)

哪个输出:

Error code 0, SQL state 22001: Data truncation
Error code 8115, SQL state 22003: Arithmetic overflow error converting expression to data type int.
Run Code Online (Sandbox Code Playgroud)

所以,我尝试过:

select dateadd(ms,CAST (1359016610667 AS BIGINT) ,'1970-01-01 00:00:00.0');
Run Code Online (Sandbox Code Playgroud)

它输出完全相同的错误.为了安全起见,我尝试过:

select CAST (1359016610667 AS BIGINT) 
Run Code Online (Sandbox Code Playgroud)

哪个输出:

1359016610667
Run Code Online (Sandbox Code Playgroud)

我确保java long等同于TSQL bigint - 它们都很8 B长.重读dateadd()文档显示以下内容:

DATEADD(datepart,number,date)
....
number
是一个表达式,可以解析为添加到date的datepart的int.用户定义的变量有效.

如果我理解正确,这意味着这种方法不能用于将unix时间戳转换为TSQL时间戳,这很好地原谅了我的语言,但只是简单的延迟.

我的问题是:

  • 我对这种情况的解释是否正确? …

t-sql epoch unix-timestamp

5
推荐指数
2
解决办法
2万
查看次数

在打包之前在Maven中执行任务

在打包之前,我不明白如何在Maven中运行任务.

<build>
    <plugins>
        [...]
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <phase>generate-sources</phase>
                    <configuration>
                        <tasks>
                            <echo message="****** TEST *****" />
                        </tasks>
                    </configuration>
                </execution>
            </executions>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

当我跑步时mvn clean package,它不会被执行.我该如何执行此任务?我正在使用maven 3.0.5,如果重要的话.

**更新:**

添加idgoal按照建议从命令行解决问题.

<id>my-generate-sources</id>
<goals>
    <goal>run</goal>
</goals>
Run Code Online (Sandbox Code Playgroud)

为了修复Eclipse错误,我在构建部分中配置了lifecyleMappingMetadata:

<build>
...
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>org.apache.maven.plugins</groupId>
                                    <artifactId>maven-antrun-plugin</artifactId>
                                    <versionRange>[1.7,)</versionRange>
                                    <goals>
                                        <goal>run</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <execute />
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>
Run Code Online (Sandbox Code Playgroud)

eclipse maven-3 maven

3
推荐指数
1
解决办法
1880
查看次数

标签 统计

eclipse ×1

epoch ×1

maven ×1

maven-3 ×1

t-sql ×1

unix-timestamp ×1