我正在尝试在MSSQL中设置一个默认值或当前日期绑定的列
我目前正在使用GETDATE()
,但这给了我时间戳,包括小时,分钟,秒和毫秒,我只需要一天的部分(2015-03-05)。
我在网上找到的只有在SELECT语句中更改它的结果。
答案 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
(只获得没有时间的日期),您可以使用CAST
到DATE
格式。
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