I'm currently battling with my driftwood too. Some people attach a slate tile to the bottom then bury the slate in the substrate, or use rocks to weigh it down. I've got a ziploc baggie of gravel literally strapped to the bottom of mine. It looks kinda ugly, but I'm lost for ideas at the moment. Suction cups work too. I don't have a drill so I was kinda making up things as I went.
As for how long..? It depends on how dry the wood was before it was put into your tank. Mine has been in for a month at least and its still trying float away.
I need to redo the string holding the bag to the wood, but I'm not looking forward to making an utter mess of things trying to get it to sink. I think my fish are still semi-traumatized from that night lol