getdate() 返回值 转换为DWORD

yuyunliuhen 2009-04-14 01:48:08
数据库中通过gatedate返回的时间格式 大概是这个样子的 2009-4-14 10:51:19
我想用一个DWORD值保存这个时间值,请问有什么好的方法,或者算法。
BS:可以直接返回字符串,但这样的话,需要多于16BYTES,如果能用DWORD保存的话,当然使用这个了,然后在客户端又可通过这个DWORD值得出时间值。
谢谢!
...全文
258 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
haitao 2009-04-14
  • 打赏
  • 举报
回复
39915.5764916281天 的确不是longint能存储的,精确到分钟也许可以了,
也就是smalldatetime才是4个字节的原因
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jinjazz 的回复:]
引用 10 楼 yuyunliuhen 的回复:
谢谢各位!
getdate()是设置的默认值,类似日志形式的,然后可以方便的查看时间。
数据都是以包的形式发送的,在客户端不能直接操作数据库,也不能执行SQL语句了吧,


你不能执行sql语句还谈什么getdate返回类型。
[/Quote]

这个是服务器上执行SQL的,然后就返回值发送客户端
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jinjazz 的回复:]
select cast(getdate() as float) 返回39915.5764916281

客户端用语言自己转一下就行了,1900-1-1加上39915.5764916281天,这个不是很难把,怎么一点进取心都灭有的
[/Quote]

zxkid 2009-04-14
  • 打赏
  • 举报
回复
DATETIME在SQL Server存储为2个4 字节整数(即2个DWORD),用一个DWORD是保存不了的吧
jinjazz 2009-04-14
  • 打赏
  • 举报
回复
select cast(getdate() as float) 返回39915.5764916281

客户端用语言自己转一下就行了,1900-1-1加上39915.5764916281天,这个不是很难把,怎么一点进取心都灭有的
jinjazz 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 yuyunliuhen 的回复:]
谢谢各位!
getdate()是设置的默认值,类似日志形式的,然后可以方便的查看时间。
数据都是以包的形式发送的,在客户端不能直接操作数据库,也不能执行SQL语句了吧,
[/Quote]

你不能执行sql语句还谈什么getdate返回类型。
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yangsnow_rain_wind 的回复:]
SQL code那就是这个!
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
/*
------------
20090414140518
(1 row(s) affected)
*/
[/Quote]

就是这个!


Many thanks!
肥龙上天 2009-04-14
  • 打赏
  • 举报
回复
那就是这个!
select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
/*
------------
20090414140518
(1 row(s) affected)
*/
肥龙上天 2009-04-14
  • 打赏
  • 举报
回复

--日期转换参数,值得收藏
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

其它我不常用的日期格式转换方法:

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177
肥龙上天 2009-04-14
  • 打赏
  • 举报
回复

这个?
select CONVERT(varchar(12) , getdate(), 112 )
/*
------------
20090414

(1 row(s) affected)
*
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 josy 的回复:]
20090414105119

这样呢?
[/Quote]

这样解析挺麻烦的,正在查找更简便的方法
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
谢谢各位!
getdate()是设置的默认值,类似日志形式的,然后可以方便的查看时间。
数据都是以包的形式发送的,在客户端不能直接操作数据库,也不能执行SQL语句了吧,
htl258_Tony 2009-04-14
  • 打赏
  • 举报
回复
float是对的,可是DWORD好像是整型的。
htl258_Tony 2009-04-14
  • 打赏
  • 举报
回复
select cast(getdate() as int)
csdyyr 2009-04-14
  • 打赏
  • 举报
回复
--用float
DECLARE @DATE FLOAT
SET @DATE=CAST(GETDATE() AS FLOAT)

SELECT @DATE
SELECT CAST(@DATE AS DATETIME)
/*
----------------------
39915.5822247299

(1 row(s) affected)


-----------------------
2009-04-14 13:58:24.213
*/
百年树人 2009-04-14
  • 打赏
  • 举报
回复
20090414105119

这样呢?
yuyunliuhen 2009-04-14
  • 打赏
  • 举报
回复
typedef unsigned long DWORD;
CeShenBeiWang 2009-04-14
  • 打赏
  • 举报
回复
帮顶!
jinjazz 2009-04-14
  • 打赏
  • 举报
回复
select cast(39915.5764916281 as datetime)
jinjazz 2009-04-14
  • 打赏
  • 举报
回复
select cast(getdate() as float)
加载更多回复(1)

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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