经测试,SQL Server与Delphi的日期表示有以下不同
日期数值         SQL Server            Delphi
----------------------------------------------------
 -1             1899-12-31          1899-12-29
  0             1900-01-01          1899-12-30
  1             1900-01-02          1899-12-31
另外,TDeteTimePicker控件空日期表示为0,即1899-12-30。为正确参与计算,怎么统一SQL Server与Delphi的日期?

解决方案 »

  1.   

    Delphi 对显示格式进行设置如yyyy-mm-dd
    SQL 端也可以使用convert()函数进行格式化.
      

  2.   

    在SQL Server和Delphi都使用格式化能达到统一,但只是表面上的,在计算时一不小心就出错。如在SQL Server中'1900-01-01'的值为0,而在Delphi中却是2!
    不知道有没人知道,在Delphi中是不是有一个环境设置或编译设置,使其0日期为‘1900-01-01’的?
      

  3.   

    Sql server :convert(nchar(10),date_field,20)将date_field转换成yyyy-mm-dd格式字符串
    Delphi:formatdatetime('yyyy-mm-dd',date)
    用字符串比较
      

  4.   

    还有一个问题呢,这样的格式换:
    convert(char(10),date_field,120)
    formatdatetime('yyyy-mm-dd',datavalue)
    会不会与windows的日期时间设置有关系?
    但我已经看到,TDateTimePicker控件就有关系,设置为shortdate格式的系统中,日期被显示为:
    2004- 1- 2,“0”被空格代替了!@