【问题标题】:SQL get date rangeSQL获取日期范围
【发布时间】:2019-04-15 05:02:16
【问题描述】:

如何使用 ff 日期范围(from-to) 获取我需要的数据?我数据库中的日期有不同的格式:m/d/yyyy 和 mm/dd/yyyy。我需要使用我的日期选择器提供的日期范围来获取这些日期。这是我的 SQL 查询:

sql = "SELECT * FROM CIC_1047 WHERE (DOL >= '" & FormatToDate(dtFrom.value) 
AND DOL <= '" & FormatToDate(dtTo.value) & "') OR (DOL >= '" & FormatToDate2(dtFrom.value) & "' AND DOL <= '" & FormatToDate2(dtTo.value) & "') OR (DOL >= '" & FormatToDate3(dtFrom.value) & "' AND DOL <= '" & FormatToDate3(dtTo.value) & "') OR (DOL >= '" & FormatToDate4(dtFrom.value) & "' AND DOL <= '" & FormatToDate4(dtTo.value) & "') ORDER BY DOL asc, Name"

FormatToDates 是我的日期函数。

【问题讨论】:

  • 你能在这里整理一下你的代码示例吗?目前很难阅读,因为它大部分都在一行上,而且您的单引号和双引号没有正确配对。另外,FormatToDate 函数中有哪些不同的数字?日期函数有什么区别?
  • 只是为了确定我们在说什么:您在同一个数据库中的日期有不同的格式?您确定这是日期时间列吗?

标签: sql-server vb6


【解决方案1】:

在内部,SQL Server 日期存储为 2 个整数。第一个整数是基准日期 (1900/01/01) 之前或之后的日期数。第二个整数存储午夜后时钟滴答的数量,每个滴答为 1⁄300 秒。 负数表示早于 1900 年 1 月 1 日的日期。

示例:日期2013-10-02 12:00:00 存储为数字 41547.5

将日期从日期选择器格式化为 ISO-8601 格式,然后试试这个:

sql = "SELECT * FROM CIC_1047 WHERE DOL >= '" & FormatToIsoDate(dtFrom.value) & "' AND DOL <= '" & FormatToIsoDate(dtTo.value) & "'"

https://www.sqlserver-dba.com/2015/04/how-to-use-iso-8601-for-date-and-datetime.html

【讨论】:

    猜你喜欢
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多