将GETDATE()设置为仅在MSSQL中提供默认值的日期

时间:2015-03-05 10:08:23

标签: sql sql-server getdate

我正在尝试在MSSQL中设置一个默认值或当前日期绑定的列 我目前正在使用GETDATE(),但这给了我时间戳,包括小时,分钟,秒和毫秒,我只需要一天的部分(2015-03-05)。

我在网上找到的只有在SELECT语句中更改它的结果。

6 个答案:

答案 0 :(得分:2)

如果您在日期上下文中使用它,SQL Server将自动为您投射

DECLARE @date DATE = GETDATE();

SELECT  @date

-- result: 2015-03-05

或者您可以简单地使用演员

SELECT CAST(GETDATE() as DATE)

修改

我仍然不确定我是否得到你想要的东西,但是如果你想把它当作默认约束,那么它的工作方式是一样的:

create table #table
(
    id int,
    insertDate date default GETDATE()
)

insert into #table (id) values (1)

select top 1 insertDate from #table

-- result: 2015-03-05

答案 1 :(得分:0)

如果您只想存储日期,不包括时间,您可以使用它:

CREATE TABLE #dts(id INT IDENTITY, d_date datetime2 DEFAULT CONVERT(char(10), GETDATE(), 126))
INSERT #dts DEFAULT VALUES 
SELECT * FROM #dts

但是它会返回零而不是时间,如下所示:

id  d_date
-------------------------------
1   2015-03-05 00:00:00.0000000

您可以使用LEFT功能删除不需要的字符:

SELECT id, LEFT(d_date, 10) FROM #dts

它将归还你:

id  d_date
--------------
1   2015-03-05

你可以通过使用varchar作为数据类型来实现这一点,但我不认为它是合适的解决方案,并且在select语句中格式化日期更好。但如果你确实需要它,那么这就有效:

CREATE TABLE #dts(id INT IDENTITY, d_date VARCHAR(10) DEFAULT CONVERT(char(10), GETDATE(), 126))
INSERT #dts DEFAULT VALUES 
SELECT * FROM #dts

<强>输出:

id  d_date
--------------
1   2015-03-05

答案 2 :(得分:0)

将列上的默认值设置为

(CONVERT([date],getdate(),0))

我已多次使用它

答案 3 :(得分:0)

您的问题的答案很简单。将要保存值的列的格式更改为DATE(而不是包含时间部分的数据类型,即:DATETIME)。

然后将默认值设置为GETDATE(),因为目标列为DATE,时间部分将被删除。

获取此示例代码:

CREATE TABLE #temp (id INT, CreatedDate DATE DEFAULT GETDATE())

INSERT INTO #temp ( id)
VALUES ( 1 ),( 2 ),( 3 )

SELECT * FROM #temp

DROP TABLE #temp

<强>输出:

id  CreatedDate
1   2015-03-05
2   2015-03-05
3   2015-03-05

答案 4 :(得分:0)

以其他方式将DATETIME转换为DATE(只获得没有时间的日期),您可以使用CASTDATE格式。

SELECT CAST(GETDATE() AS DATE)

在您的情况下,您可以设置默认值类型DATE而不进行CAST。

CREATE TABLE #TempTable
(
   Id INT,
   ..... ,
   CurrentDate DATE DEFAULT GETDATE()
)

答案 5 :(得分:0)

您可以使用CONVERT()以不同格式获取日期。来自http://www.w3schools.com/sql/func_convert.asp

CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)

为您提供以下结果:

Nov 04 2011 11:45 PM
11-04-11
11-04-2011
04 Nov 11
04 Nov 2011
04 Nov 2011 11:45:34:243