有没有办法将我的默认值设置为自1970年以来的秒数?

时间:2016-07-19 11:55:27

标签: sql-server

在我的表格中,我将当前日期/时间设置为:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">

    <include
        layout="@layout/app_bar_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>

但有没有办法可以将其设置为自1970年以来的秒数.Unix纪元(或Unix时间或POSIX时间或Unix时间戳)是自1970年1月1日以来经过的秒数

我意识到我需要将此字段作为整数但我不确定如何设置默认值?

1 个答案:

答案 0 :(得分:3)

虽然我真的建议最好存储datetime2值甚至datetime,但您可以简单地使用Alex K的建议:

DECLARE @T AS TABLE
(
    UnixTime int DEFAULT(DATEDIFF(SECOND, '1970-01-01 00:00', GETDATE())),
    CreateDate datetime DEFAULT(GETDATE())
)

测试:

INSERT INTO @T DEFAULT VALUES

SELECT *
FROM @T

结果:

UnixTime    CreateDate
----------- -----------------------
1468930170  2016-07-19 12:09:30.380

Damien_The_Unbeliever建议的另一个选择是使用计算列:

DECLARE @T AS TABLE
(
    CreateDate datetime DEFAULT(GETDATE()),
    UnixTime as DATEDIFF(SECOND, '1970-01-01 00:00',CreateDate)
)