【问题标题】:extract date from datetime stamp从日期时间戳中提取日期
【发布时间】:2009-09-07 16:45:58
【问题描述】:

有人知道如何从日期时间戳中提取日期作为 where 子句的一部分吗?

例如。

 select *
 from tableA
 where date between '01/08/2009' and '31/08/2009'

(日期是时间戳!)

非常感谢, 菲奥娜

【问题讨论】:

  • 嗨,卢克,我正在使用 MS SQL 服务器。谢谢菲奥娜
  • +1 给卢克。非常依赖数据库引擎
  • SQL Server 的哪个版本? 2008 年??如果是这样:CAST(date AS DATE) - SQL Server 2008 中有一个名为 DATE 的新数据类型,它只表示日期部分 - 没有时间。
  • 但正如 "gbn" 提到的 - 如果你真的有一个类型 TIMESTAMP 那么它真的 不是 日期/时间戳,而是任意二进制值

标签: sql sql-server date timestamp


【解决方案1】:

如果这是 sql server,那是不可能的。 timestamp data type 的名称具有误导性,因为它不存储任何类型的日期信息。它所拥有的只是一个允许您建立记录顺序的顺序值(例如,项目 A 是在项目 B 之前创建的),因此您在该列中没有足够的信息来知道该行是在哪一天创建的。

由于我提供的链接是特定于 Sql Server 2000 的,请查看此链接以获取有关 SQL Server 2008 的信息:
http://msdn.microsoft.com/en-us/library/ms182776.aspx

timestamprowversion 数据类型的同义词,受数据类型同义词的行为影响。在 DDL 语句中,尽可能使用 rowversion 而不是 timestamp

要在 Sql Server 中构建真正的时间戳列,请使用 DateTime(或 DateTime2)数据类型并将其默认值设置为 getdate()current_timestamp

【讨论】:

    【解决方案2】:

    如果是真正的日期时间值,而不是二进制的 TIMESTAMP/ROWVERSION(8)...

    SELECT DATEADD(DAY, DATEDIFF(DAY, 0, @MyValue), 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 2014-11-17
      • 2014-11-20
      • 1970-01-01
      相关资源
      最近更新 更多