MS SQL Server2000中binary类型存储日期的显示

binglingxuehua 2009-03-27 04:42:26
在SQL Server 2000中用binary数据类型存储日期,怎样能在“查询分析器”中显示出原来保存的日期。例如在“查询分析器”中显示为“0x01C2DF4060C35430"这种格式,怎样写select语句,使在查询时显示为“2009-1-2 16:40:35:800”这样的格式?

...全文
298 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
binglingxuehua 2009-05-04
  • 打赏
  • 举报
回复
在DELPHI中有没有哪个控件可以提取binary类型数据!
binglingxuehua 2009-04-30
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 htl258 的回复:]
引用 8 楼 jinjazz 的回复:
问题是你的binary是怎么的出来的,sqlserver基准年份以及存储方式和开发语言中的不一样。光就sql语句来说binary和datetime是可以互相转化的,但和你的数据不一样


SQL codeselect cast(0x00009B850112D274 as datetime)

select cast(cast('2009-01-02 16:40:35:800' as datetime) as binary(8))


sql的基准是1900-1-1,com的基准是1899-12-30,而.net的基准是0001-1-1
MVP专家,收藏。
[/Quote]说明白些
binglingxuehua 2009-03-31
  • 打赏
  • 举报
回复
你能帮我把代码写出吗,14楼的楼言主。
fcuandy 2009-03-30
  • 打赏
  • 举报
回复
已被转换为ticks值,sqlserver中无法直接表示此范围精度。

但我们通过其它外部语言可以得到一个偏移量
然后再操作,或者直接在前端语言中处理。

参考以前回贴:

http://topic.csdn.net/u/20071218/15/50489f2b-0b60-482a-9551-5ace99f1a5e4.html
binglingxuehua 2009-03-30
  • 打赏
  • 举报
回复
我是用别人做好的存储,只是增加了一个查询的版块(用DELPHI编写)。
binglingxuehua 2009-03-30
  • 打赏
  • 举报
回复
我用vc++编程收集客户端发生事件的时间,然后把发生的时间存入SQL数据库中,最后用面向对象DELPHI软件编写一个查询事件。其中vc++的部分代码是:
/ TimeSel.h : header file
//

/////////////////////////////////////////////////////////////////////////////
// CTimeSel dialog

class CTimeSel : public CDialog
{
// Construction
public:
CTimeSel(CWnd* pParent = NULL); // standard constructor
void SetInit( CTime start, CTime end );
CTime m_start;
CTime m_end;
// Dialog Data
//{{AFX_DATA(CTimeSel)
enum { IDD = IDD_TIMEDLG };
int m_nDayEnd;
int m_nHoursEnd;
int m_nHoursStart;
int m_nMinuteStart;
int m_nYearStart;
int m_nDayStart;
int m_nMonthStart;
int m_nMinuteEnd;
//}}AFX_DATA


// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CTimeSel)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL

// Implementation
protected:

// Generated message map functions
//{{AFX_MSG(CTimeSel)
virtual void OnOK();
virtual void OnCancel();
virtual BOOL OnInitDialog();
afx_msg void OnDoubleclickedCancel();
afx_msg void OnChangeMinuteEnd();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
  • 打赏
  • 举报
回复
http://blog.csdn.net/HEROWANG/archive/2008/05/16/2451272.aspx
不知道这个是否有用
htl258_Tony 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 jinjazz 的回复:]
问题是你的binary是怎么的出来的,sqlserver基准年份以及存储方式和开发语言中的不一样。光就sql语句来说binary和datetime是可以互相转化的,但和你的数据不一样


SQL codeselect cast(0x00009B850112D274 as datetime)

select cast(cast('2009-01-02 16:40:35:800' as datetime) as binary(8))




sql的基准是1900-1-1,com的基准是1899-12-30,而.net的基准是0001-1-1
[/Quote]MVP专家,收藏。
jinjazz 2009-03-27
  • 打赏
  • 举报
回复
所以你先要搞清楚你的biary是存入数据库的,然后才谈得上如何显示。只要知道了如何存储的,哪怕在客户端用delphi算法解析都没有问题,dbGrid也可显示设置单元格文字。
jinjazz 2009-03-27
  • 打赏
  • 举报
回复
问题是你的binary是怎么的出来的,sqlserver基准年份以及存储方式和开发语言中的不一样。光就sql语句来说binary和datetime是可以互相转化的,但和你的数据不一样

select cast(0x00009B850112D274 as datetime)

select cast(cast('2009-01-02 16:40:35:800' as datetime) as binary(8))



sql的基准是1900-1-1,com的基准是1899-12-30,而.net的基准是0001-1-1
sdhdy 2009-03-27
  • 打赏
  • 举报
回复
用binary数据类型存储日期,爱莫能助。
ai_li7758521 2009-03-27
  • 打赏
  • 举报
回复
关注+帮顶
jlj84237485 2009-03-27
  • 打赏
  • 举报
回复
帮顶一下
dawugui 2009-03-27
  • 打赏
  • 举报
回复
很同情你,帮顶.
binglingxuehua 2009-03-27
  • 打赏
  • 举报
回复
其实我的全部问题是:SQL SERVER中用binary类型存储的日期,我想用delphi开发软件通过adoquery控件在查询出的记录,在dbgrid表格中显示出具体的发生日期和时间。例如在SQL SERVER中binary的期是0x01C969D24ED59A80,而在dbgrid表格中显示的格式为2008年11月11日14时22分22秒456毫秒。
htl258_Tony 2009-03-27
  • 打赏
  • 举报
回复
没这样干过,关注.
dawugui 2009-03-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 binglingxuehua 的帖子:]
在SQL Server 2000中用binary数据类型存储日期,怎样能在“查询分析器”中显示出原来保存的日期。例如在“查询分析器”中显示为“0x01C2DF4060C35430"这种格式,怎样写select语句,使在查询时显示为“2009-1-2 16:40:35:800”这样的格式?
[/Quote]
这个得怎么转换吧?试试看.

22,211

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧