Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 最新查询的MS SQL版本_Mysql_Sql Server_Tsql_Date - Fatal编程技术网

Mysql 最新查询的MS SQL版本

Mysql 最新查询的MS SQL版本,mysql,sql-server,tsql,date,Mysql,Sql Server,Tsql,Date,我有一个查询来查看表的详细信息 select APPLICATION_NAME, SOURCE, IDENTITY_NAME, IDENTITY_DISPLAY_NAME, NATIVE_IDENTITY, ACCOUNT_DISPLAY_NAME, OPERATION, STATUS, CREATED, (TO_DATE('1970-01-01','YYYY-MM-DD') + created / 86400000) AS CREATED_DATE 看起来这个查询是针对MySQL的。但是,

我有一个查询来查看表的详细信息

select APPLICATION_NAME,
SOURCE,
IDENTITY_NAME,
IDENTITY_DISPLAY_NAME,
NATIVE_IDENTITY,
ACCOUNT_DISPLAY_NAME,
OPERATION,
STATUS,
CREATED, 
(TO_DATE('1970-01-01','YYYY-MM-DD') + created / 86400000) AS CREATED_DATE
看起来这个查询是针对MySQL的。但是,我们的数据库托管在Microsoft SQL中。因此,在运行查询时,我得到了以下错误

“截止日期”不是可识别的内置函数名。


您能否建议一个等效的TO_DATE命令,以及如何在上面的查询中修改它

它看起来像是
创建的
是一个历元时间戳,以毫秒为单位存储(86400000是一天中有多少毫秒)。如果是这样,我认为您希望:

DATEADD(ms, created, '1970-01-01') AS CREATED_DATE

旁注:
TO_DATE()
是Oracle语法,而不是MySQL。原始查询中最重要的更改是日期算法:Oracle允许向
日期添加天数,而大多数其他数据库不允许。另一方面,SQL Server不支持标准的间隔算法(我们需要使用
DATEADD()
)。

您可以使用DATEADD添加到datetime并转换为将字符串设置为datetime类型:

--Using the DateAdd to add parts to the date and Tehe CONVERT to set your string to a datetime
    SELECT DATEADD(MS, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Milliseconds
    SELECT DATEADD(S, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Seconds
    SELECT DATEADD(N, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Minutes
    SELECT DATEADD(HH, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Hours
    SELECT DATEADD(D, 10, CONVERT(DATETIME, '1970-01-01')) -- Add 10 Days

你想干什么?您也不需要在MySQL中执行任何此类操作-这两个数据库都有日期类型。一旦人们意识到这使他们能够解决Y2K38问题,你也必须修复MySQL数据库。只需将
created
更改为适当的日期类型,例如允许你指定分数秒精度,实际上比毫秒精度的bigint占用更少的空间。或者,如果您不希望时间组件SQL Server具有用于将文本日期转换为日期类型的
CAST
CONVERT
函数,也可以使用这些函数。但是,正如有人建议的那样,最好使用日期类型。
CAST(日期,'1970-01-01',23)
再说一遍,你想做什么??创建的
包含哪些内容?你不需要这样做,你只需要使用
DATEADD
将秒或毫秒添加到一个基准日期。OP希望将其转换为t-SQL。看起来
created
存储的是Unix纪元,而不是与日期时间相关的适当纪元value@PanagiotisKanavos:现在已修复。它可能应该是
ms
,因为OP除以86400000,而不是86400。但是我们不能确定,因为没有样本数据,为什么这个答案被否决了(和这里的所有其他答案一样)?请详细说明。