急求:CAST(0x0000A09C012CA92A AS DateTime) 转换为MYSQL用的INT或者varchar 本帖最后由 default7 于 2013-04-09 17:44:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 sqlserver的时间字段能存0x0000A09C012CA92A这样的? mysql> SELECT FROM_UNIXTIME(1196440219); -> '2007-11-30 10:30:19'mysql> SELECT FROM_UNIXTIME(1196440219) + 0; -> 20071130103019.000000mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(), -> '%Y %D %M %h:%i:%s %x'); -> '2007 30th November 10:30:59 2007' 是SQL2008数据导出为SQL,然后DATETIME类型的字段自动变成了这样的了。~ 除非导出为TXT文本才是时间格式,否则都是这样的格式。0x开头不是很明白~我得到的时间数据全部都是这样格式:0x0000A09C012CA92A(来自SQL2008,字段类型datetime)。如何才可以在Mysql中将他们转换为 时间,其实他存的是时间的。浏览表的时候格式却是YYYY-mm-dd HH:ii:ss。在SQL2008 中SELECT 0x0000A09C012CA92A,显示的值是时间。但是在MYSQL返回的是NULL。 (不要高估你的汉语表达能力或者我的汉语理解能力) 建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。 conv(变量,16,10)然后再用版主说的from_unixtime函数 mysql> SELECT CONV(0x0000A09C012CA92A,16,10);+--------------------------------+| CONV(0x0000A09C012CA92A,16,10) |+--------------------------------+| 0 |+--------------------------------+1 row in set (0.00 sec)GO/****** Object: Table [dbo].[gbook] Script Date: 04/09/2013 16:04:11 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE [dbo].[gbook]( [id] [int] IDENTITY(1,1) NOT NULL, [name] [nvarchar](max) NULL, [msg] [nvarchar](max) NULL, [AddTime] [datetime] NOT NULL, [Reply] [nvarchar](1000) NULL, [ok] [bit] NOT NULL, [Pname] [nvarchar](50) NOT NULL, CONSTRAINT [PK_gbook] PRIMARY KEY CLUSTERED( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOSET IDENTITY_INSERT [dbo].[gbook] ONINSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (18, N'小白', N'多少钱一个啊', CAST(0x0000A09C01283323 AS DateTime), N'2000', 1, N'小米')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (19, N'猫猫', N'有没有优惠', CAST(0x0000A09C01287704 AS DateTime), N'有的,特价', 1, N'微软')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (20, N'年轻', N'是正品的吗', CAST(0x0000A09C012888BD AS DateTime), N'绝对正品的', 1, N'HTC')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (21, N'7U7', N'包邮吗', CAST(0x0000A09C01299502 AS DateTime), N'嗯包邮', 1, N'三星')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (22, N'刘士', N'您好', CAST(0x0000A09C012C9C75 AS DateTime), N'好', 1, N'X ONE')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (23, N'潘多拉', N'有没有外壳送?', CAST(0x0000A09C012C9E04 AS DateTime), N'有', 1, N'G12')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (24, N'lujuan', N'您好vvvv', CAST(0x0000A09C012C9F92 AS DateTime), N'您好', 1, N'G13')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (25, N'琪儿', N'test', CAST(0x0000A09C012CA113 AS DateTime), N'test33', 1, N'iphone5')INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (966, N'ddd', N'我的怎么还没收到?', CAST(0x0000A19B00E1B75D AS DateTime), NULL, 0, N'三星')SET IDENTITY_INSERT [dbo].[gbook] OFF以上是导出来自SQL 2008 不好意思,没说明白,如果使用conv()函数进行进制转换要求不能有非16进制字符,所以先把x去掉,使用replace()函数select from_unixtime(conv(replace(upper('变量'),'X',''),16,10)) 不对啊~ 变成0了,仍旧:mysql> select from_unixtime(conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10)) -> ;+----------------------------------------------------------------------+| from_unixtime(conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10)) |+----------------------------------------------------------------------+| 1970-01-01 08:00:00 |+----------------------------------------------------------------------+1 row in set (0.00 sec)mysql> select conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10) -> ;+-------------------------------------------------------+| conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10) |+-------------------------------------------------------+| 0 |+-------------------------------------------------------+1 row in set (0.00 sec) 0x0000A09C012CA92A这个是变量,需要加单引号的 和这个没关系,你们都没实际动手试过吧,sql server输出的这个16位数的值非常大,转到mysql里以后得到的10进制数用from_unixtime直接就溢出了,所以就是0,现在就不知道sql server输出的这个16进制数是怎么计算的,否则就能反推了 mysql 查询多个字段中任意一个字段符合要求的记录 字段替换问题~ 求一个表中查询另外一个表记录大于0的 询问 mysql的数据库 库名称如何更改 问一个关于MYSQL连接数限制的简单问题 请教:mysql 用户权限设置问题 急求 php+mysql+apache 的网络空间!! 在线等....... 关于mysql的代化.做500人的压力测试,总是当机 请问有没有带用户认证的PHPMyAdmin? 数据库如何查询三个表,将三个表的数据全部查出,这三个表字段不同 初学mysql数据库,有些命令不知道怎么搞 Out of memory (Needed 65312 bytes)
-> '2007-11-30 10:30:19'
mysql> SELECT FROM_UNIXTIME(1196440219) + 0;
-> 20071130103019.000000
mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
-> '%Y %D %M %h:%i:%s %x');
-> '2007 30th November 10:30:59 2007'
~ 除非导出为TXT文本才是时间格式,否则都是这样的格式。0x开头不是很明白~我得到的时间数据全部都是这样格式:0x0000A09C012CA92A(来自SQL2008,字段类型datetime)。
如何才可以在Mysql中将他们转换为 时间,其实他存的是时间的。浏览表的时候格式却是YYYY-mm-dd HH:ii:ss。
在SQL2008 中SELECT 0x0000A09C012CA92A,显示的值是时间。但是在MYSQL返回的是NULL。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
+--------------------------------+
| CONV(0x0000A09C012CA92A,16,10) |
+--------------------------------+
| 0 |
+--------------------------------+
1 row in set (0.00 sec)GO
/****** Object: Table [dbo].[gbook] Script Date: 04/09/2013 16:04:11 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[gbook](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](max) NULL,
[msg] [nvarchar](max) NULL,
[AddTime] [datetime] NOT NULL,
[Reply] [nvarchar](1000) NULL,
[ok] [bit] NOT NULL,
[Pname] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_gbook] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[gbook] ON
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (18, N'小白', N'多少钱一个啊', CAST(0x0000A09C01283323 AS DateTime), N'2000', 1, N'小米')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (19, N'猫猫', N'有没有优惠', CAST(0x0000A09C01287704 AS DateTime), N'有的,特价', 1, N'微软')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (20, N'年轻', N'是正品的吗', CAST(0x0000A09C012888BD AS DateTime), N'绝对正品的', 1, N'HTC')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (21, N'7U7', N'包邮吗', CAST(0x0000A09C01299502 AS DateTime), N'嗯包邮', 1, N'三星')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (22, N'刘士', N'您好', CAST(0x0000A09C012C9C75 AS DateTime), N'好', 1, N'X ONE')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (23, N'潘多拉', N'有没有外壳送?', CAST(0x0000A09C012C9E04 AS DateTime), N'有', 1, N'G12')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (24, N'lujuan', N'您好vvvv', CAST(0x0000A09C012C9F92 AS DateTime), N'您好', 1, N'G13')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (25, N'琪儿', N'test', CAST(0x0000A09C012CA113 AS DateTime), N'test33', 1, N'iphone5')
INSERT [dbo].[gbook] ([id], [name], [msg], [AddTime], [Reply], [ok], [Pname]) VALUES (966, N'ddd', N'我的怎么还没收到?', CAST(0x0000A19B00E1B75D AS DateTime), NULL, 0, N'三星')
SET IDENTITY_INSERT [dbo].[gbook] OFF
以上是导出来自SQL 2008
不对啊~ 变成0了,仍旧:
mysql> select from_unixtime(conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10
))
-> ;
+----------------------------------------------------------------------+
| from_unixtime(conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10)) |
+----------------------------------------------------------------------+
| 1970-01-01 08:00:00 |
+----------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> select conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10)
-> ;
+-------------------------------------------------------+
| conv(replace(upper(0x0000A09C012CA92A),'X',''),16,10) |
+-------------------------------------------------------+
| 0 |
+-------------------------------------------------------+
1 row in set (0.00 sec)