html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue https://github.com/pydata/xarray/issues/4045#issuecomment-735851973,https://api.github.com/repos/pydata/xarray/issues/4045,735851973,MDEyOklzc3VlQ29tbWVudDczNTg1MTk3Mw==,2418513,2020-11-30T15:22:09Z,2020-11-30T15:22:09Z,NONE,"> Can we use the encoding[""dtype""] field to solve this? i.e. use int64 when encoding[""dtype""] is not set and use the specified value when available? I think a lot of logic needs to be reshuffled, because as of right now it will complain ""you can't store a float64 in int64"" or something along those lines, when trying to do it with a nanosecond timestamp.","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,614275938 https://github.com/pydata/xarray/issues/4045#issuecomment-735849936,https://api.github.com/repos/pydata/xarray/issues/4045,735849936,MDEyOklzc3VlQ29tbWVudDczNTg0OTkzNg==,2418513,2020-11-30T15:18:55Z,2020-11-30T15:21:02Z,NONE,"> In principle we should be able to handle this (contributions are welcome) I don't mind contributing but not knowing the netcdf stuff inside out I'm not sure I have a good vision on what's the proper way to do it. My use case is very simple - I have an in-memory xr.Dataset that I want to save() and then load() without losses. Should it just be an `xr.save(..., m8=True)` (or whatever that flag would be called), so that all of numpy's `M8[...]` and `m8[...]` would be serialized transparently (as int64, that is) without passing them through the whole cftime pipeline. It would be then nice, of course, if `xr.load` was also aware of this convention (via some special attribute or somehow else) and could convert them back like `.view('M8[ns]')` when loading. I think xarray should also throw an exception if it detects timestamps/timedeltas of nanosecond precision that it can't serialize without going through int-float-int routine (or automatically revert to using this transparent but netcdf-incompatible mode). Maybe this is not the proper way to do it - ideas welcome (there's also an open PR - #4400 - mind checking that out?)","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,614275938 https://github.com/pydata/xarray/issues/4045#issuecomment-734951187,https://api.github.com/repos/pydata/xarray/issues/4045,734951187,MDEyOklzc3VlQ29tbWVudDczNDk1MTE4Nw==,2418513,2020-11-27T18:47:26Z,2020-11-27T18:51:00Z,NONE,"Just stumbled upon this as well. Internally, `datetime64[ns]` is simply an 8-byte int. Why on earth would it be serialized in a lossy way as a float64?... Simply telling it to `encoding={...: {'dtype': 'int64'}}` won't work since then it complains about serializing float as an int. Is there a way out of this, other than not using `M8[ns]` dtypes at all with xarray? This is a huge issue, as anyone using nanosecond-precision timestamps with xarray would unknowingly and silently read wrong data after deserializing.","{""total_count"": 2, ""+1"": 2, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,614275938