【问题标题】:Datetime Format in Sql serverSql server 中的日期时间格式
【发布时间】:2012-06-27 19:05:12
【问题描述】:

我在 sql 表 DateIn 中有字段,表中的日期存在,如 '01/04/2012 00:00:00'。当我在查询分析器上运行查询时 DateIn 就像“2012-04-01 00:00:00.000”一样,我正在从文本框中传递日期,例如“dd/mm/yyyy”格式但不起作用。我有一个函数,我将日期变量 Dim StrDate 作为 DateTime 从文本框传递给查询。请指导我。

【问题讨论】:

  • 日期时间没有过滤,就像我正在调用从 01/06/2012 到 26/06/2012 的记录,数据来自表格中的所有日期。
  • DateIn 列的数据类型是什么?
  • 日期时间是数据类型

标签: sql-server-2005


【解决方案1】:

如果该列是datetime,请不要再认为它是以某种格式存储的,例如mm/dd/yyyy 或dd/mm/yyyy。日期/时间值在内部存储,没有应用任何这种区域格式 - 这正是 Management Studio 向您呈现的方式。您应该使用 yyyymmdd 为日期文字编写查询,例如:

SELECT <cols> 
FROM dbo.table 
WHERE DateIn >= '20120601'
AND DateIn < '20120626';

如果其他用户执行,如果机器上的区域设置发生变化,或者如果您将代码移动到另一台服务器,则其他任何操作都可能无法正常工作。请看:

还要确保您使用的是字符串分隔符。如果你说:

WHERE DateIn > 01/06/2012

同理:

WHERE DateIn > (1 divided by 6 divided by 2012)

由于整数数学而产生:

WHERE DateIn > 0

在 SQL Server 中,作为日期/时间的 0 是 '1900-01-01' - 因此该子句将返回所有非 NULL 行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 2012-05-08
    • 2012-08-15
    • 2010-09-17
    • 2017-01-10
    相关资源
    最近更新 更多