【问题标题】:Date datatype for SQL Server 2005SQL Server 2005 的日期数据类型
【发布时间】:2011-07-14 19:44:57
【问题描述】:

我使用的是 SQL Server 2005 Express Edition。我想将出生日期存储在表中,我应该使用哪种数据类型?

Datetime 还提供时间和日期。

在 SQL Server 2005 中有什么方法可以只存储日期吗?

【问题讨论】:

  • 并非如此 - SQL Server 2008 引入了 DATE(仅限日期)数据类型。 SQL Server 2008 Express 也将是免费的.....
  • @marc_s 是的,我知道这一点,但想暂时留在 SqlServer2005 上

标签: sql-server-2005


【解决方案1】:

使用 smalldatetime(4 字节存储)并添加检查约束。不要使用 char 等。

基于这个问题Best approach to remove time part of datetime in SQL Server,CHECK CONSTRAINT 是这样的

DOBCol = DATEADD(day, DATEDIFF(day, 0, DOBCol), 0)

【讨论】:

  • ...但是如何删除时间部分?你能解释一下吗?
  • @vatspoo:这确保不会存储时间。 datetime 只有在您提供时才有时间。您的客户端代码会发送 DOB 时间吗?
  • 不,我只需要存储日期,但我无法理解 DATEADD(day, DATEDIFF(day, 0, DOBCol), 0) 将如何删除时间部分。能详细点吗?
  • 它在 1900 年 1 月 1 日为零时起作用。它计算出从那时起的整天数,然后加回来,从而消除了时间。根据我的链接,这是消除时间的最有效方法
  • 好的...我应该如何使用它?就像我创建表的方式 create table biodata (Name varchar(20), Gender varchar (1), DoB Datetime, FatherName varchar (20) ), Education varchar(10), Address varchar(35), Pincode varchar(6), DoJ datetime) 这就是我将值插入表中的方式...插入生物数据值('Sally'、'F' , 1985-11-5, 'Gissele Mary', 'BBA', '19/26 MS Colony, Goa','110034', '2011-07-01') 请指导我完成这个..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-12
  • 2010-12-12
  • 1970-01-01
  • 2014-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多